posterly-mcp-server 0.44.0 → 0.45.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 (155) hide show
  1. package/README.md +310 -111
  2. package/dist/index.js +190 -894
  3. package/dist/lib/alias-transport.d.ts +84 -0
  4. package/dist/lib/alias-transport.js +193 -0
  5. package/dist/lib/api-client.d.ts +18 -0
  6. package/dist/lib/api-client.js +55 -0
  7. package/dist/lib/preview-token-core.d.ts +62 -0
  8. package/dist/lib/preview-token-core.js +131 -0
  9. package/dist/lib/preview-token.d.ts +23 -0
  10. package/dist/lib/preview-token.js +44 -0
  11. package/dist/lib/tool-registry.d.ts +246 -0
  12. package/dist/lib/tool-registry.js +394 -0
  13. package/dist/lib/tool-runtime.d.ts +68 -0
  14. package/dist/lib/tool-runtime.js +85 -0
  15. package/dist/lib/version.d.ts +1 -1
  16. package/dist/lib/version.js +1 -1
  17. package/dist/tools/audit-google-business-profile.js +1 -1
  18. package/dist/tools/connect-account.d.ts +4 -4
  19. package/dist/tools/connect-account.js +2 -2
  20. package/dist/tools/create-connect-session.d.ts +2 -2
  21. package/dist/tools/create-connect-session.js +2 -2
  22. package/dist/tools/create-post.d.ts +6 -6
  23. package/dist/tools/create-post.js +3 -3
  24. package/dist/tools/create-posts-batch.d.ts +4 -4
  25. package/dist/tools/create-webhook.d.ts +2 -2
  26. package/dist/tools/delete-post.d.ts +34 -10
  27. package/dist/tools/delete-post.js +52 -16
  28. package/dist/tools/generate-captions.d.ts +2 -2
  29. package/dist/tools/generate-image.d.ts +4 -4
  30. package/dist/tools/generate-image.js +2 -2
  31. package/dist/tools/generate-video.d.ts +6 -6
  32. package/dist/tools/generate-video.js +1 -1
  33. package/dist/tools/get-agent-signup-info.js +2 -2
  34. package/dist/tools/get-post.d.ts +16 -1
  35. package/dist/tools/get-post.js +35 -19
  36. package/dist/tools/list-accounts.d.ts +49 -3
  37. package/dist/tools/list-accounts.js +148 -33
  38. package/dist/tools/list-analytics.d.ts +111 -0
  39. package/dist/tools/list-analytics.js +393 -0
  40. package/dist/tools/list-brands.d.ts +38 -3
  41. package/dist/tools/list-brands.js +138 -20
  42. package/dist/tools/list-comments.d.ts +29 -9
  43. package/dist/tools/list-comments.js +75 -34
  44. package/dist/tools/list-conversations.d.ts +32 -9
  45. package/dist/tools/list-conversations.js +63 -27
  46. package/dist/tools/list-google-business-media.js +1 -1
  47. package/dist/tools/list-google-business-reviews.d.ts +32 -9
  48. package/dist/tools/list-google-business-reviews.js +77 -52
  49. package/dist/tools/list-jobs.d.ts +60 -0
  50. package/dist/tools/list-jobs.js +81 -0
  51. package/dist/tools/list-platforms.d.ts +62 -3
  52. package/dist/tools/list-platforms.js +118 -9
  53. package/dist/tools/list-posts.d.ts +2 -2
  54. package/dist/tools/manage-comment.d.ts +102 -0
  55. package/dist/tools/manage-comment.js +125 -0
  56. package/dist/tools/manage-conversation.d.ts +79 -0
  57. package/dist/tools/manage-conversation.js +75 -0
  58. package/dist/tools/manage-google-business-media.d.ts +103 -0
  59. package/dist/tools/manage-google-business-media.js +126 -0
  60. package/dist/tools/manage-google-business-review.d.ts +146 -0
  61. package/dist/tools/manage-google-business-review.js +115 -0
  62. package/dist/tools/manage-oauth-client.d.ts +121 -0
  63. package/dist/tools/manage-oauth-client.js +94 -0
  64. package/dist/tools/manage-webhook.d.ts +99 -0
  65. package/dist/tools/manage-webhook.js +87 -0
  66. package/dist/tools/start-signup.d.ts +2 -2
  67. package/dist/tools/submit-agent-feedback.d.ts +4 -4
  68. package/dist/tools/trigger-platform-helper.d.ts +2 -2
  69. package/dist/tools/update-post.d.ts +62 -11
  70. package/dist/tools/update-post.js +79 -26
  71. package/dist/tools/upload-media.d.ts +32 -9
  72. package/dist/tools/upload-media.js +54 -18
  73. package/dist/tools/validate-post.d.ts +4 -4
  74. package/dist/tools/whoami.d.ts +15 -2
  75. package/dist/tools/whoami.js +221 -25
  76. package/package.json +5 -3
  77. package/scripts/test-alias-transport.mjs +368 -0
  78. package/scripts/test-client-header-sanitization.mjs +78 -0
  79. package/scripts/test-tool-annotations.mjs +38 -17
  80. package/server.json +9 -2
  81. package/src/index.ts +227 -1443
  82. package/src/lib/alias-transport.ts +233 -0
  83. package/src/lib/api-client.ts +65 -0
  84. package/src/lib/preview-token-core.ts +157 -0
  85. package/src/lib/preview-token.ts +54 -0
  86. package/src/lib/tool-registry.ts +538 -0
  87. package/src/lib/tool-runtime.ts +117 -0
  88. package/src/lib/version.ts +1 -1
  89. package/src/tools/audit-google-business-profile.ts +1 -1
  90. package/src/tools/connect-account.ts +2 -2
  91. package/src/tools/create-connect-session.ts +2 -2
  92. package/src/tools/create-post.ts +3 -3
  93. package/src/tools/delete-post.ts +60 -19
  94. package/src/tools/generate-image.ts +2 -2
  95. package/src/tools/generate-video.ts +1 -1
  96. package/src/tools/get-agent-signup-info.ts +2 -2
  97. package/src/tools/get-post.ts +35 -21
  98. package/src/tools/list-accounts.ts +187 -39
  99. package/src/tools/list-analytics.ts +444 -0
  100. package/src/tools/list-brands.ts +162 -26
  101. package/src/tools/list-comments.ts +86 -43
  102. package/src/tools/list-conversations.ts +81 -39
  103. package/src/tools/list-google-business-media.ts +1 -1
  104. package/src/tools/list-google-business-reviews.ts +93 -64
  105. package/src/tools/list-jobs.ts +91 -0
  106. package/src/tools/list-platforms.ts +135 -11
  107. package/src/tools/manage-comment.ts +142 -0
  108. package/src/tools/manage-conversation.ts +89 -0
  109. package/src/tools/manage-google-business-media.ts +147 -0
  110. package/src/tools/manage-google-business-review.ts +139 -0
  111. package/src/tools/manage-oauth-client.ts +116 -0
  112. package/src/tools/manage-webhook.ts +103 -0
  113. package/src/tools/update-post.ts +106 -39
  114. package/src/tools/upload-media.ts +76 -28
  115. package/src/tools/whoami.ts +253 -30
  116. package/tool-annotations.json +76 -149
  117. package/tool-registry.json +2085 -0
  118. package/src/tools/add-google-business-media.ts +0 -50
  119. package/src/tools/create-oauth-client.ts +0 -36
  120. package/src/tools/delete-comment.ts +0 -29
  121. package/src/tools/delete-google-business-media.ts +0 -30
  122. package/src/tools/delete-google-business-review-reply.ts +0 -30
  123. package/src/tools/delete-oauth-client.ts +0 -23
  124. package/src/tools/delete-post-group.ts +0 -17
  125. package/src/tools/delete-webhook.ts +0 -17
  126. package/src/tools/get-account-analytics.ts +0 -171
  127. package/src/tools/get-brand-profile.ts +0 -86
  128. package/src/tools/get-brand.ts +0 -34
  129. package/src/tools/get-comment.ts +0 -47
  130. package/src/tools/get-connect-link.ts +0 -61
  131. package/src/tools/get-connect-session.ts +0 -63
  132. package/src/tools/get-conversation.ts +0 -44
  133. package/src/tools/get-google-business-review-link.ts +0 -30
  134. package/src/tools/get-image-job.ts +0 -36
  135. package/src/tools/get-learned-voice.ts +0 -31
  136. package/src/tools/get-mcp-status.ts +0 -212
  137. package/src/tools/get-performance-profile.ts +0 -47
  138. package/src/tools/get-platform-schema.ts +0 -56
  139. package/src/tools/get-post-analytics.ts +0 -243
  140. package/src/tools/get-post-insights.ts +0 -60
  141. package/src/tools/get-post-missing.ts +0 -16
  142. package/src/tools/get-video-job.ts +0 -36
  143. package/src/tools/list-brand-accounts.ts +0 -36
  144. package/src/tools/reply-google-business-review.ts +0 -32
  145. package/src/tools/reply-to-comment.ts +0 -30
  146. package/src/tools/send-message.ts +0 -28
  147. package/src/tools/suggest-google-business-review-reply.ts +0 -44
  148. package/src/tools/sync-inbox.ts +0 -28
  149. package/src/tools/test-webhook.ts +0 -18
  150. package/src/tools/update-comment.ts +0 -31
  151. package/src/tools/update-oauth-client.ts +0 -38
  152. package/src/tools/update-post-release-id.ts +0 -25
  153. package/src/tools/update-post-status.ts +0 -31
  154. package/src/tools/update-webhook.ts +0 -36
  155. package/src/tools/upload-media-from-url.ts +0 -33
@@ -0,0 +1,2085 @@
1
+ {
2
+ "$comment": "Single source of truth for the posterly MCP tool surface: which set each tool belongs to, its human label, its views/actions (sub tools), confirm level, and annotation hints, plus renamed-tool aliases. Loaded by mcp-server/src/index.ts (stdio) and lib/mcp/tool-registry.ts (hosted); checked by scripts/check-mcp-tool-design.ts. Rules: docs/mcp-tool-design.md. Param-driven modes (for example update_post status vs content edits) are still recorded as views/actions so the action count is derived from this file. Aliases may add `mode` to force a param-driven mode, and param specs may be `nullable`. A param-driven mode is chosen by its `when` params.",
3
+ "version": 1,
4
+ "designRules": "on",
5
+ "budgets": {
6
+ "maxTotal": 70,
7
+ "maxCore": 30
8
+ },
9
+ "sunset": "2027-01-12",
10
+ "toolsets": {
11
+ "core": {
12
+ "label": "Core",
13
+ "description": "Accounts, posting, media, schedule, analytics, and support. What most assistants need."
14
+ },
15
+ "creative": {
16
+ "label": "Creative",
17
+ "description": "AI image and video generation, jobs, and post suggestions."
18
+ },
19
+ "inbox": {
20
+ "label": "Inbox",
21
+ "description": "Social inbox comments and DMs."
22
+ },
23
+ "google_business": {
24
+ "label": "Google Business",
25
+ "description": "Google Business Profile reviews, media, and audits."
26
+ },
27
+ "admin": {
28
+ "label": "Admin",
29
+ "description": "API keys, OAuth clients, webhooks, and workspace members."
30
+ },
31
+ "billing": {
32
+ "label": "Billing",
33
+ "description": "Subscription changes."
34
+ },
35
+ "signup": {
36
+ "label": "Signup",
37
+ "description": "Pre-auth signup for brand-new users. Local npm package only; always on.",
38
+ "alwaysOn": true,
39
+ "surfaces": [
40
+ "stdio"
41
+ ]
42
+ }
43
+ },
44
+ "tools": {
45
+ "get_agent_signup_info": {
46
+ "set": "signup",
47
+ "label": "Signup info for agents",
48
+ "surfaces": [
49
+ "stdio"
50
+ ],
51
+ "exception": {
52
+ "category": "signup",
53
+ "reason": "Pre-auth signup help before any API key exists; local npm package only."
54
+ },
55
+ "readOnly": true,
56
+ "destructive": false,
57
+ "idempotent": true,
58
+ "openWorld": false,
59
+ "confirm": "none"
60
+ },
61
+ "start_signup": {
62
+ "set": "signup",
63
+ "label": "Start a paid signup",
64
+ "surfaces": [
65
+ "stdio"
66
+ ],
67
+ "exception": {
68
+ "category": "signup",
69
+ "reason": "Starts a paid signup before any API key exists; local npm package only."
70
+ },
71
+ "readOnly": false,
72
+ "destructive": false,
73
+ "idempotent": false,
74
+ "openWorld": true,
75
+ "confirm": "none"
76
+ },
77
+ "get_signup_session": {
78
+ "set": "signup",
79
+ "label": "Check a signup session",
80
+ "surfaces": [
81
+ "stdio"
82
+ ],
83
+ "exception": {
84
+ "category": "signup",
85
+ "reason": "Polls a pre-auth signup session before any API key exists; local npm package only."
86
+ },
87
+ "readOnly": true,
88
+ "destructive": false,
89
+ "idempotent": true,
90
+ "openWorld": true,
91
+ "confirm": "none"
92
+ },
93
+ "whoami": {
94
+ "set": "core",
95
+ "label": "Who am I",
96
+ "exception": {
97
+ "category": "report",
98
+ "reason": "The first call of every session: identity, scopes, workspaces, onboarding, and the MCP connection status report."
99
+ },
100
+ "selector": "view",
101
+ "defaultMode": "identity",
102
+ "views": {
103
+ "identity": {
104
+ "label": "You, your scopes, and your workspaces",
105
+ "openWorld": false,
106
+ "params": {}
107
+ },
108
+ "status": {
109
+ "label": "MCP server and connection status",
110
+ "openWorld": true,
111
+ "params": {}
112
+ }
113
+ }
114
+ },
115
+ "create_api_key": {
116
+ "set": "admin",
117
+ "label": "Create an API key",
118
+ "exception": {
119
+ "category": "secret",
120
+ "reason": "Returns the new API key secret once; kept apart so the secret never mixes with other output."
121
+ },
122
+ "readOnly": false,
123
+ "destructive": false,
124
+ "idempotent": false,
125
+ "openWorld": false,
126
+ "confirm": "confirm"
127
+ },
128
+ "delete_api_key": {
129
+ "set": "admin",
130
+ "label": "Revoke an API key",
131
+ "exception": {
132
+ "category": "secret",
133
+ "reason": "Revokes an API key secret; kept next to create_api_key, which returns the secret once."
134
+ },
135
+ "readOnly": false,
136
+ "destructive": true,
137
+ "idempotent": true,
138
+ "openWorld": false,
139
+ "confirm": "confirm"
140
+ },
141
+ "list_workspace_members": {
142
+ "set": "admin",
143
+ "label": "Workspace members",
144
+ "readOnly": true,
145
+ "destructive": false,
146
+ "idempotent": true,
147
+ "openWorld": false,
148
+ "confirm": "none"
149
+ },
150
+ "manage_workspace_member": {
151
+ "set": "admin",
152
+ "label": "Manage a workspace member",
153
+ "selector": "action",
154
+ "actions": {
155
+ "invite": {
156
+ "label": "Invite a colleague",
157
+ "destructive": false,
158
+ "idempotent": false,
159
+ "openWorld": true,
160
+ "confirm": "preview"
161
+ },
162
+ "update": {
163
+ "label": "Change role or brands",
164
+ "destructive": true,
165
+ "idempotent": false,
166
+ "openWorld": true,
167
+ "confirm": "preview"
168
+ },
169
+ "remove": {
170
+ "label": "Remove a member or invite",
171
+ "destructive": true,
172
+ "idempotent": false,
173
+ "openWorld": true,
174
+ "confirm": "preview"
175
+ }
176
+ }
177
+ },
178
+ "list_accounts": {
179
+ "set": "core",
180
+ "label": "Connected accounts",
181
+ "selector": "view",
182
+ "defaultMode": "accounts",
183
+ "views": {
184
+ "accounts": {
185
+ "label": "Connected accounts",
186
+ "openWorld": false,
187
+ "params": {
188
+ "workspace_id": {
189
+ "type": "string"
190
+ },
191
+ "account_id": {
192
+ "type": "string"
193
+ }
194
+ }
195
+ },
196
+ "learned_voice": {
197
+ "label": "Learned voice of an account",
198
+ "openWorld": false,
199
+ "params": {
200
+ "account_id": {
201
+ "type": "string",
202
+ "required": true
203
+ }
204
+ }
205
+ },
206
+ "performance_profile": {
207
+ "label": "Performance profile of an account",
208
+ "openWorld": false,
209
+ "params": {
210
+ "account_id": {
211
+ "type": "string",
212
+ "required": true
213
+ }
214
+ }
215
+ },
216
+ "connect_session": {
217
+ "label": "Check a connect session",
218
+ "openWorld": true,
219
+ "params": {
220
+ "session_id": {
221
+ "type": "string",
222
+ "required": true
223
+ },
224
+ "debug": {
225
+ "type": "boolean"
226
+ }
227
+ }
228
+ }
229
+ }
230
+ },
231
+ "disconnect_account": {
232
+ "set": "core",
233
+ "label": "Disconnect an account",
234
+ "exception": {
235
+ "category": "connect",
236
+ "reason": "Account connection step with its own explicit confirm; folding it into a read tool would mark onboarding destructive."
237
+ },
238
+ "readOnly": false,
239
+ "destructive": true,
240
+ "idempotent": true,
241
+ "openWorld": true,
242
+ "confirm": "confirm"
243
+ },
244
+ "connect_account": {
245
+ "set": "core",
246
+ "label": "Connect with credentials",
247
+ "exception": {
248
+ "category": "connect",
249
+ "reason": "Headless credential connection, an onboarding step that must not be marked destructive."
250
+ },
251
+ "readOnly": false,
252
+ "destructive": false,
253
+ "idempotent": true,
254
+ "openWorld": true,
255
+ "confirm": "none"
256
+ },
257
+ "create_connect_session": {
258
+ "set": "core",
259
+ "label": "Start a connect session",
260
+ "exception": {
261
+ "category": "connect",
262
+ "reason": "Starts the most common onboarding step; folding it into a tool that also disconnects would trigger permission prompts on the first call."
263
+ },
264
+ "readOnly": false,
265
+ "destructive": false,
266
+ "idempotent": false,
267
+ "openWorld": true,
268
+ "confirm": "none"
269
+ },
270
+ "list_oauth_clients": {
271
+ "set": "admin",
272
+ "label": "OAuth clients",
273
+ "readOnly": true,
274
+ "destructive": false,
275
+ "idempotent": true,
276
+ "openWorld": false,
277
+ "confirm": "none"
278
+ },
279
+ "manage_oauth_client": {
280
+ "set": "admin",
281
+ "label": "Manage an OAuth client",
282
+ "selector": "action",
283
+ "actions": {
284
+ "create": {
285
+ "label": "Create an OAuth client",
286
+ "destructive": false,
287
+ "idempotent": false,
288
+ "openWorld": false,
289
+ "confirm": "confirm",
290
+ "params": {
291
+ "client_name": {
292
+ "type": "string",
293
+ "required": true
294
+ },
295
+ "description": {
296
+ "type": "string"
297
+ },
298
+ "homepage": {
299
+ "type": "string"
300
+ },
301
+ "allowed_redirect_uris": {
302
+ "type": "array",
303
+ "required": true
304
+ },
305
+ "default_scopes": {
306
+ "type": "array",
307
+ "required": true
308
+ },
309
+ "is_active": {
310
+ "type": "boolean"
311
+ }
312
+ }
313
+ },
314
+ "update": {
315
+ "label": "Update an OAuth client",
316
+ "destructive": true,
317
+ "idempotent": true,
318
+ "openWorld": false,
319
+ "confirm": "confirm",
320
+ "params": {
321
+ "client_id": {
322
+ "type": "string",
323
+ "required": true
324
+ },
325
+ "client_name": {
326
+ "type": "string"
327
+ },
328
+ "description": {
329
+ "type": "string"
330
+ },
331
+ "homepage": {
332
+ "type": "string"
333
+ },
334
+ "allowed_redirect_uris": {
335
+ "type": "array"
336
+ },
337
+ "default_scopes": {
338
+ "type": "array"
339
+ },
340
+ "is_active": {
341
+ "type": "boolean"
342
+ }
343
+ }
344
+ },
345
+ "delete": {
346
+ "label": "Delete an OAuth client",
347
+ "destructive": true,
348
+ "idempotent": true,
349
+ "openWorld": false,
350
+ "confirm": "preview",
351
+ "params": {
352
+ "client_id": {
353
+ "type": "string",
354
+ "required": true
355
+ }
356
+ }
357
+ }
358
+ }
359
+ },
360
+ "list_platforms": {
361
+ "set": "core",
362
+ "label": "Platforms",
363
+ "selector": "view",
364
+ "defaultMode": "platforms",
365
+ "views": {
366
+ "platforms": {
367
+ "label": "Supported platforms",
368
+ "openWorld": false,
369
+ "params": {
370
+ "include_planned": {
371
+ "type": "boolean"
372
+ }
373
+ }
374
+ },
375
+ "schema": {
376
+ "label": "Platform or account schema",
377
+ "openWorld": false,
378
+ "params": {
379
+ "account_id": {
380
+ "type": "string"
381
+ },
382
+ "platform": {
383
+ "type": "string"
384
+ },
385
+ "include_planned": {
386
+ "type": "boolean"
387
+ }
388
+ }
389
+ },
390
+ "connect_link": {
391
+ "label": "Connection links",
392
+ "openWorld": false,
393
+ "params": {
394
+ "target": {
395
+ "type": "string"
396
+ },
397
+ "workspace_id": {
398
+ "type": "string"
399
+ },
400
+ "include_planned": {
401
+ "type": "boolean"
402
+ },
403
+ "debug": {
404
+ "type": "boolean"
405
+ }
406
+ }
407
+ }
408
+ }
409
+ },
410
+ "trigger_platform_helper": {
411
+ "set": "core",
412
+ "label": "Run a platform helper",
413
+ "exception": {
414
+ "category": "dispatcher",
415
+ "reason": "Routes to many platform-specific helpers (Pinterest boards, TikTok creator info, X quota, ...)."
416
+ },
417
+ "readOnly": true,
418
+ "destructive": false,
419
+ "idempotent": true,
420
+ "openWorld": true,
421
+ "confirm": "none"
422
+ },
423
+ "list_brands": {
424
+ "set": "core",
425
+ "label": "Brands",
426
+ "selector": "view",
427
+ "defaultMode": "brands",
428
+ "views": {
429
+ "brands": {
430
+ "label": "All brands",
431
+ "openWorld": false,
432
+ "params": {
433
+ "workspace_id": {
434
+ "type": "string"
435
+ }
436
+ }
437
+ },
438
+ "brand": {
439
+ "label": "One brand",
440
+ "openWorld": false,
441
+ "params": {
442
+ "brand_id": {
443
+ "type": "string",
444
+ "required": true
445
+ }
446
+ }
447
+ },
448
+ "accounts": {
449
+ "label": "Brand accounts",
450
+ "openWorld": false,
451
+ "params": {
452
+ "brand_id": {
453
+ "type": "string",
454
+ "required": true
455
+ }
456
+ }
457
+ },
458
+ "profile": {
459
+ "label": "Brand profile",
460
+ "openWorld": false,
461
+ "params": {
462
+ "brand_id": {
463
+ "type": "string",
464
+ "required": true
465
+ }
466
+ }
467
+ }
468
+ }
469
+ },
470
+ "list_post_suggestions": {
471
+ "set": "creative",
472
+ "label": "Post suggestions",
473
+ "readOnly": true,
474
+ "destructive": false,
475
+ "idempotent": true,
476
+ "openWorld": false,
477
+ "confirm": "none"
478
+ },
479
+ "dismiss_suggestion": {
480
+ "set": "creative",
481
+ "label": "Dismiss a suggestion",
482
+ "exception": {
483
+ "category": "single_action",
484
+ "reason": "Dismissing is the only change a suggestion supports, so a manage_ wrapper would add nothing."
485
+ },
486
+ "readOnly": false,
487
+ "destructive": true,
488
+ "idempotent": true,
489
+ "openWorld": false,
490
+ "confirm": "none"
491
+ },
492
+ "list_posts": {
493
+ "set": "core",
494
+ "label": "Posts",
495
+ "readOnly": true,
496
+ "destructive": false,
497
+ "idempotent": true,
498
+ "openWorld": false,
499
+ "confirm": "none"
500
+ },
501
+ "get_post": {
502
+ "set": "core",
503
+ "label": "One post",
504
+ "exception": {
505
+ "category": "report",
506
+ "reason": "Reads one post by ID plus its computed publish-readiness report (what is missing before it can publish)."
507
+ },
508
+ "selector": "view",
509
+ "defaultMode": "post",
510
+ "views": {
511
+ "post": {
512
+ "label": "One post",
513
+ "openWorld": false,
514
+ "params": {
515
+ "post_id": {
516
+ "type": "integer",
517
+ "min": 1,
518
+ "required": true
519
+ }
520
+ }
521
+ },
522
+ "missing": {
523
+ "label": "What a post is missing",
524
+ "openWorld": false,
525
+ "params": {
526
+ "post_id": {
527
+ "type": "integer",
528
+ "min": 1,
529
+ "required": true
530
+ }
531
+ }
532
+ }
533
+ }
534
+ },
535
+ "ask_support": {
536
+ "set": "core",
537
+ "label": "Ask support",
538
+ "exception": {
539
+ "category": "feedback",
540
+ "reason": "Talks to posterly support (the support AI, then a human on explicit request)."
541
+ },
542
+ "readOnly": false,
543
+ "destructive": false,
544
+ "idempotent": false,
545
+ "openWorld": true,
546
+ "confirm": "none"
547
+ },
548
+ "find_available_slot": {
549
+ "set": "core",
550
+ "label": "Find a free slot",
551
+ "exception": {
552
+ "category": "report",
553
+ "reason": "Computes free posting slots from the schedule rather than listing records."
554
+ },
555
+ "readOnly": true,
556
+ "destructive": false,
557
+ "idempotent": true,
558
+ "openWorld": false,
559
+ "confirm": "none"
560
+ },
561
+ "submit_agent_feedback": {
562
+ "set": "core",
563
+ "label": "Agent feedback",
564
+ "exception": {
565
+ "category": "feedback",
566
+ "reason": "Sends private operational feedback to the posterly team."
567
+ },
568
+ "readOnly": false,
569
+ "destructive": false,
570
+ "idempotent": false,
571
+ "openWorld": false,
572
+ "confirm": "none"
573
+ },
574
+ "submit_product_feedback": {
575
+ "set": "core",
576
+ "label": "Product feedback",
577
+ "exception": {
578
+ "category": "feedback",
579
+ "reason": "Files a bug, idea, or feedback on the public posterly board."
580
+ },
581
+ "readOnly": false,
582
+ "destructive": false,
583
+ "idempotent": false,
584
+ "openWorld": false,
585
+ "confirm": "confirm"
586
+ },
587
+ "validate_post": {
588
+ "set": "core",
589
+ "label": "Validate a post",
590
+ "exception": {
591
+ "category": "publishing",
592
+ "reason": "The dry run of create_post; kept beside it so agents validate exactly what they will publish."
593
+ },
594
+ "readOnly": true,
595
+ "destructive": false,
596
+ "idempotent": true,
597
+ "openWorld": true,
598
+ "confirm": "none"
599
+ },
600
+ "create_post": {
601
+ "set": "core",
602
+ "label": "Create a post",
603
+ "exception": {
604
+ "category": "publishing",
605
+ "reason": "Creates or schedules content that goes out to a social network."
606
+ },
607
+ "readOnly": false,
608
+ "destructive": false,
609
+ "idempotent": false,
610
+ "openWorld": true,
611
+ "confirm": "confirm"
612
+ },
613
+ "create_posts_batch": {
614
+ "set": "core",
615
+ "label": "Create posts in bulk",
616
+ "exception": {
617
+ "category": "publishing",
618
+ "reason": "Creates or schedules up to 25 posts that go out to social networks."
619
+ },
620
+ "readOnly": false,
621
+ "destructive": false,
622
+ "idempotent": false,
623
+ "openWorld": true,
624
+ "confirm": "confirm"
625
+ },
626
+ "update_post": {
627
+ "set": "core",
628
+ "label": "Edit a post",
629
+ "exception": {
630
+ "category": "publishing",
631
+ "reason": "Changes content, schedule, or status of posts that go out to a social network."
632
+ },
633
+ "selector": "params",
634
+ "defaultMode": "edit",
635
+ "actions": {
636
+ "edit": {
637
+ "label": "Edit caption, media, schedule, or settings",
638
+ "destructive": true,
639
+ "idempotent": true,
640
+ "openWorld": false,
641
+ "confirm": "confirm",
642
+ "params": {
643
+ "post_id": {
644
+ "type": "integer",
645
+ "min": 1,
646
+ "required": true
647
+ },
648
+ "caption": {
649
+ "type": "string"
650
+ },
651
+ "scheduled_at": {
652
+ "type": "string"
653
+ },
654
+ "media_url": {
655
+ "type": "string"
656
+ },
657
+ "media_urls": {
658
+ "type": "array"
659
+ },
660
+ "post_type": {
661
+ "type": "string"
662
+ },
663
+ "metadata": {
664
+ "type": "object"
665
+ },
666
+ "settings": {
667
+ "type": "object"
668
+ },
669
+ "platform_settings": {
670
+ "type": "object"
671
+ },
672
+ "instagram_settings": {
673
+ "type": "object"
674
+ },
675
+ "reel_cover_url": {
676
+ "type": "string"
677
+ },
678
+ "reel_cover_method": {
679
+ "type": "string"
680
+ },
681
+ "reel_thumb_offset": {
682
+ "type": "number",
683
+ "min": 0
684
+ }
685
+ }
686
+ },
687
+ "status": {
688
+ "label": "Pause, resume, schedule, or move to draft",
689
+ "destructive": true,
690
+ "idempotent": true,
691
+ "openWorld": false,
692
+ "confirm": "confirm",
693
+ "when": [
694
+ "status"
695
+ ],
696
+ "params": {
697
+ "post_id": {
698
+ "type": "integer",
699
+ "min": 1,
700
+ "required": true
701
+ },
702
+ "status": {
703
+ "type": "string",
704
+ "enum": [
705
+ "scheduled",
706
+ "paused",
707
+ "draft"
708
+ ],
709
+ "required": true
710
+ },
711
+ "scheduled_at": {
712
+ "type": "string"
713
+ }
714
+ }
715
+ },
716
+ "release_id": {
717
+ "label": "Set a release or group ID",
718
+ "destructive": false,
719
+ "idempotent": true,
720
+ "openWorld": false,
721
+ "confirm": "confirm",
722
+ "when": [
723
+ "release_id"
724
+ ],
725
+ "params": {
726
+ "post_id": {
727
+ "type": "integer",
728
+ "min": 1,
729
+ "required": true
730
+ },
731
+ "release_id": {
732
+ "type": "string",
733
+ "required": true
734
+ },
735
+ "group_id": {
736
+ "type": "string"
737
+ }
738
+ }
739
+ }
740
+ }
741
+ },
742
+ "delete_post": {
743
+ "set": "core",
744
+ "label": "Delete posts",
745
+ "exception": {
746
+ "category": "publishing",
747
+ "reason": "Removes scheduled content before it goes out to a social network."
748
+ },
749
+ "selector": "params",
750
+ "defaultMode": "post",
751
+ "actions": {
752
+ "post": {
753
+ "label": "Delete one post",
754
+ "destructive": true,
755
+ "idempotent": true,
756
+ "openWorld": false,
757
+ "confirm": "confirm",
758
+ "params": {
759
+ "post_id": {
760
+ "type": "integer",
761
+ "min": 1,
762
+ "required": true
763
+ }
764
+ }
765
+ },
766
+ "group": {
767
+ "label": "Delete a post group",
768
+ "destructive": true,
769
+ "idempotent": true,
770
+ "openWorld": false,
771
+ "confirm": "preview",
772
+ "when": [
773
+ "group_id"
774
+ ],
775
+ "params": {
776
+ "group_id": {
777
+ "type": "string",
778
+ "required": true
779
+ }
780
+ }
781
+ }
782
+ }
783
+ },
784
+ "get_x_posting_quota": {
785
+ "set": "core",
786
+ "label": "X posting quota",
787
+ "exception": {
788
+ "category": "money",
789
+ "reason": "Reports the paid X posting quota and add-on plan."
790
+ },
791
+ "readOnly": true,
792
+ "destructive": false,
793
+ "idempotent": true,
794
+ "openWorld": true,
795
+ "confirm": "none"
796
+ },
797
+ "upload_media": {
798
+ "set": "core",
799
+ "label": "Upload media",
800
+ "exception": {
801
+ "category": "single_action",
802
+ "reason": "Uploading is the only action; the url, base64, and file path options are input variants of it."
803
+ },
804
+ "selector": "params",
805
+ "defaultMode": "file",
806
+ "actions": {
807
+ "file": {
808
+ "label": "Upload a file",
809
+ "destructive": false,
810
+ "idempotent": false,
811
+ "openWorld": false,
812
+ "confirm": "none",
813
+ "params": {
814
+ "base64_data": {
815
+ "type": "string"
816
+ },
817
+ "file_path": {
818
+ "type": "string"
819
+ },
820
+ "filename": {
821
+ "type": "string",
822
+ "required": true
823
+ },
824
+ "content_type": {
825
+ "type": "string"
826
+ }
827
+ }
828
+ },
829
+ "url": {
830
+ "label": "Upload from a URL",
831
+ "destructive": false,
832
+ "idempotent": false,
833
+ "openWorld": true,
834
+ "confirm": "none",
835
+ "when": [
836
+ "url"
837
+ ],
838
+ "params": {
839
+ "url": {
840
+ "type": "string",
841
+ "required": true
842
+ },
843
+ "filename": {
844
+ "type": "string"
845
+ },
846
+ "content_type": {
847
+ "type": "string"
848
+ }
849
+ }
850
+ }
851
+ }
852
+ },
853
+ "create_signed_upload": {
854
+ "set": "core",
855
+ "label": "Signed upload link",
856
+ "exception": {
857
+ "category": "session",
858
+ "reason": "Starts a signed direct-to-storage upload session for large files."
859
+ },
860
+ "readOnly": false,
861
+ "destructive": false,
862
+ "idempotent": false,
863
+ "openWorld": true,
864
+ "confirm": "none"
865
+ },
866
+ "create_media_drop": {
867
+ "set": "core",
868
+ "label": "Media drop link",
869
+ "exception": {
870
+ "category": "session",
871
+ "reason": "Starts a human drop-page upload session."
872
+ },
873
+ "readOnly": false,
874
+ "destructive": false,
875
+ "idempotent": false,
876
+ "openWorld": true,
877
+ "confirm": "none"
878
+ },
879
+ "list_media": {
880
+ "set": "core",
881
+ "label": "Media library",
882
+ "readOnly": true,
883
+ "destructive": false,
884
+ "idempotent": true,
885
+ "openWorld": false,
886
+ "confirm": "none"
887
+ },
888
+ "get_video_options": {
889
+ "set": "creative",
890
+ "label": "Video options",
891
+ "exception": {
892
+ "category": "ai_generation",
893
+ "reason": "Read-only options and credit costs for AI video generation, checked before spending credits."
894
+ },
895
+ "readOnly": true,
896
+ "destructive": false,
897
+ "idempotent": true,
898
+ "openWorld": false,
899
+ "confirm": "none"
900
+ },
901
+ "run_video_function": {
902
+ "set": "creative",
903
+ "label": "Video helper",
904
+ "exception": {
905
+ "category": "dispatcher",
906
+ "reason": "Routes to the video generators' helper functions (input modes, cost estimate, request validation)."
907
+ },
908
+ "readOnly": true,
909
+ "destructive": false,
910
+ "idempotent": true,
911
+ "openWorld": true,
912
+ "confirm": "none"
913
+ },
914
+ "generate_video": {
915
+ "set": "creative",
916
+ "label": "Generate a video",
917
+ "exception": {
918
+ "category": "ai_generation",
919
+ "reason": "Spends AI credits to generate a video."
920
+ },
921
+ "readOnly": false,
922
+ "destructive": false,
923
+ "idempotent": false,
924
+ "openWorld": true,
925
+ "confirm": "confirm"
926
+ },
927
+ "list_jobs": {
928
+ "set": "creative",
929
+ "label": "AI jobs",
930
+ "selector": "type",
931
+ "views": {
932
+ "image": {
933
+ "label": "Image jobs",
934
+ "openWorld": true,
935
+ "params": {
936
+ "job_id": {
937
+ "type": "string"
938
+ },
939
+ "status": {
940
+ "type": "string",
941
+ "enum": [
942
+ "pending",
943
+ "processing",
944
+ "completed",
945
+ "failed"
946
+ ]
947
+ },
948
+ "limit": {
949
+ "type": "integer",
950
+ "min": 1,
951
+ "max": 50
952
+ }
953
+ }
954
+ },
955
+ "video": {
956
+ "label": "Video jobs",
957
+ "openWorld": true,
958
+ "params": {
959
+ "job_id": {
960
+ "type": "string"
961
+ },
962
+ "status": {
963
+ "type": "string",
964
+ "enum": [
965
+ "pending",
966
+ "processing",
967
+ "completed",
968
+ "failed",
969
+ "dismissed"
970
+ ]
971
+ },
972
+ "limit": {
973
+ "type": "integer",
974
+ "min": 1,
975
+ "max": 50
976
+ }
977
+ }
978
+ }
979
+ }
980
+ },
981
+ "generate_captions": {
982
+ "set": "core",
983
+ "label": "Generate captions",
984
+ "exception": {
985
+ "category": "ai_generation",
986
+ "reason": "Uses the AI caption allowance to write caption options."
987
+ },
988
+ "readOnly": false,
989
+ "destructive": false,
990
+ "idempotent": false,
991
+ "openWorld": true,
992
+ "confirm": "none"
993
+ },
994
+ "generate_image": {
995
+ "set": "creative",
996
+ "label": "Generate an image",
997
+ "exception": {
998
+ "category": "ai_generation",
999
+ "reason": "Spends AI credits to generate an image."
1000
+ },
1001
+ "readOnly": false,
1002
+ "destructive": false,
1003
+ "idempotent": false,
1004
+ "openWorld": true,
1005
+ "confirm": "confirm"
1006
+ },
1007
+ "list_analytics": {
1008
+ "set": "core",
1009
+ "label": "Analytics",
1010
+ "selector": "view",
1011
+ "views": {
1012
+ "accounts": {
1013
+ "label": "Account analytics",
1014
+ "openWorld": true,
1015
+ "params": {
1016
+ "account_id": {
1017
+ "type": "integer",
1018
+ "min": 1,
1019
+ "required": true
1020
+ },
1021
+ "from": {
1022
+ "type": "string"
1023
+ },
1024
+ "to": {
1025
+ "type": "string"
1026
+ },
1027
+ "presentation": {
1028
+ "type": "string",
1029
+ "enum": [
1030
+ "compact",
1031
+ "table",
1032
+ "json"
1033
+ ]
1034
+ }
1035
+ }
1036
+ },
1037
+ "posts": {
1038
+ "label": "Post analytics",
1039
+ "openWorld": true,
1040
+ "params": {
1041
+ "account_id": {
1042
+ "type": "integer",
1043
+ "min": 1,
1044
+ "required": true
1045
+ },
1046
+ "from": {
1047
+ "type": "string"
1048
+ },
1049
+ "to": {
1050
+ "type": "string"
1051
+ },
1052
+ "limit": {
1053
+ "type": "integer",
1054
+ "min": 1,
1055
+ "max": 200
1056
+ },
1057
+ "offset": {
1058
+ "type": "integer",
1059
+ "min": 0
1060
+ },
1061
+ "presentation": {
1062
+ "type": "string",
1063
+ "enum": [
1064
+ "compact",
1065
+ "table",
1066
+ "json"
1067
+ ]
1068
+ }
1069
+ }
1070
+ },
1071
+ "insights": {
1072
+ "label": "Post insights",
1073
+ "openWorld": false,
1074
+ "params": {
1075
+ "account_id": {
1076
+ "type": "integer",
1077
+ "min": 1
1078
+ },
1079
+ "post_id": {
1080
+ "type": "integer",
1081
+ "min": 1
1082
+ },
1083
+ "checkpoint": {
1084
+ "type": "string",
1085
+ "enum": [
1086
+ "1h",
1087
+ "6h",
1088
+ "24h",
1089
+ "72h",
1090
+ "7d"
1091
+ ]
1092
+ },
1093
+ "limit": {
1094
+ "type": "integer",
1095
+ "min": 1,
1096
+ "max": 100
1097
+ }
1098
+ }
1099
+ }
1100
+ }
1101
+ },
1102
+ "list_google_business_reviews": {
1103
+ "set": "google_business",
1104
+ "label": "Google reviews",
1105
+ "selector": "view",
1106
+ "defaultMode": "reviews",
1107
+ "views": {
1108
+ "reviews": {
1109
+ "label": "Google reviews",
1110
+ "openWorld": true,
1111
+ "params": {
1112
+ "workspace_id": {
1113
+ "type": "string"
1114
+ },
1115
+ "account_id": {
1116
+ "type": "integer",
1117
+ "min": 1
1118
+ },
1119
+ "location_id": {
1120
+ "type": "string"
1121
+ },
1122
+ "rating": {
1123
+ "type": "integer",
1124
+ "min": 1,
1125
+ "max": 5
1126
+ },
1127
+ "unanswered": {
1128
+ "type": "boolean"
1129
+ },
1130
+ "limit": {
1131
+ "type": "integer",
1132
+ "min": 1,
1133
+ "max": 1000
1134
+ },
1135
+ "offset": {
1136
+ "type": "integer",
1137
+ "min": 0
1138
+ }
1139
+ }
1140
+ },
1141
+ "review_link": {
1142
+ "label": "Google review link",
1143
+ "openWorld": true,
1144
+ "params": {
1145
+ "workspace_id": {
1146
+ "type": "string"
1147
+ },
1148
+ "account_id": {
1149
+ "type": "integer",
1150
+ "min": 1
1151
+ },
1152
+ "location_id": {
1153
+ "type": "string"
1154
+ }
1155
+ }
1156
+ }
1157
+ }
1158
+ },
1159
+ "audit_google_business_profile": {
1160
+ "set": "google_business",
1161
+ "label": "Audit a Google profile",
1162
+ "exception": {
1163
+ "category": "report",
1164
+ "reason": "Produces a computed profile audit with recommendations rather than listing records."
1165
+ },
1166
+ "readOnly": true,
1167
+ "destructive": false,
1168
+ "idempotent": true,
1169
+ "openWorld": true,
1170
+ "confirm": "none"
1171
+ },
1172
+ "manage_google_business_review": {
1173
+ "set": "google_business",
1174
+ "label": "Manage Google reviews",
1175
+ "selector": "action",
1176
+ "actions": {
1177
+ "suggest_reply": {
1178
+ "label": "Suggest a reply (never posts)",
1179
+ "destructive": false,
1180
+ "idempotent": false,
1181
+ "openWorld": true,
1182
+ "confirm": "none",
1183
+ "params": {
1184
+ "workspace_id": {
1185
+ "type": "string"
1186
+ },
1187
+ "account_id": {
1188
+ "type": "integer",
1189
+ "min": 1
1190
+ },
1191
+ "location_id": {
1192
+ "type": "string"
1193
+ },
1194
+ "review_text": {
1195
+ "type": "string"
1196
+ },
1197
+ "star_rating": {
1198
+ "type": "number",
1199
+ "min": 1,
1200
+ "max": 5,
1201
+ "required": true
1202
+ },
1203
+ "reviewer_name": {
1204
+ "type": "string"
1205
+ },
1206
+ "business_name": {
1207
+ "type": "string"
1208
+ },
1209
+ "tone": {
1210
+ "type": "string",
1211
+ "enum": [
1212
+ "professional",
1213
+ "friendly",
1214
+ "apologetic"
1215
+ ]
1216
+ },
1217
+ "count": {
1218
+ "type": "integer",
1219
+ "min": 1,
1220
+ "max": 5
1221
+ }
1222
+ }
1223
+ },
1224
+ "reply": {
1225
+ "label": "Reply to a review",
1226
+ "destructive": true,
1227
+ "idempotent": true,
1228
+ "openWorld": true,
1229
+ "confirm": "preview",
1230
+ "nonce": true,
1231
+ "params": {
1232
+ "workspace_id": {
1233
+ "type": "string"
1234
+ },
1235
+ "account_id": {
1236
+ "type": "integer",
1237
+ "min": 1
1238
+ },
1239
+ "location_id": {
1240
+ "type": "string"
1241
+ },
1242
+ "review_name": {
1243
+ "type": "string",
1244
+ "required": true
1245
+ },
1246
+ "comment": {
1247
+ "type": "string",
1248
+ "required": true
1249
+ }
1250
+ }
1251
+ },
1252
+ "delete_reply": {
1253
+ "label": "Delete a review reply",
1254
+ "destructive": true,
1255
+ "idempotent": true,
1256
+ "openWorld": true,
1257
+ "confirm": "preview",
1258
+ "params": {
1259
+ "workspace_id": {
1260
+ "type": "string"
1261
+ },
1262
+ "account_id": {
1263
+ "type": "integer",
1264
+ "min": 1
1265
+ },
1266
+ "location_id": {
1267
+ "type": "string"
1268
+ },
1269
+ "review_name": {
1270
+ "type": "string",
1271
+ "required": true
1272
+ }
1273
+ }
1274
+ }
1275
+ }
1276
+ },
1277
+ "list_google_business_media": {
1278
+ "set": "google_business",
1279
+ "label": "Google profile media",
1280
+ "readOnly": true,
1281
+ "destructive": false,
1282
+ "idempotent": true,
1283
+ "openWorld": true,
1284
+ "confirm": "none"
1285
+ },
1286
+ "manage_google_business_media": {
1287
+ "set": "google_business",
1288
+ "label": "Manage Google profile media",
1289
+ "selector": "action",
1290
+ "actions": {
1291
+ "add": {
1292
+ "label": "Add a photo or video",
1293
+ "destructive": false,
1294
+ "idempotent": false,
1295
+ "openWorld": true,
1296
+ "confirm": "preview",
1297
+ "nonce": true,
1298
+ "params": {
1299
+ "workspace_id": {
1300
+ "type": "string"
1301
+ },
1302
+ "account_id": {
1303
+ "type": "integer",
1304
+ "min": 1
1305
+ },
1306
+ "location_id": {
1307
+ "type": "string"
1308
+ },
1309
+ "source_url": {
1310
+ "type": "string",
1311
+ "required": true
1312
+ },
1313
+ "category": {
1314
+ "type": "string",
1315
+ "required": true
1316
+ },
1317
+ "media_format": {
1318
+ "type": "string",
1319
+ "enum": [
1320
+ "PHOTO",
1321
+ "VIDEO"
1322
+ ]
1323
+ }
1324
+ }
1325
+ },
1326
+ "delete": {
1327
+ "label": "Delete a photo or video",
1328
+ "destructive": true,
1329
+ "idempotent": true,
1330
+ "openWorld": true,
1331
+ "confirm": "preview",
1332
+ "params": {
1333
+ "workspace_id": {
1334
+ "type": "string"
1335
+ },
1336
+ "account_id": {
1337
+ "type": "integer",
1338
+ "min": 1
1339
+ },
1340
+ "location_id": {
1341
+ "type": "string"
1342
+ },
1343
+ "media_name": {
1344
+ "type": "string",
1345
+ "required": true
1346
+ }
1347
+ }
1348
+ }
1349
+ }
1350
+ },
1351
+ "list_conversations": {
1352
+ "set": "inbox",
1353
+ "label": "Conversations",
1354
+ "selector": "params",
1355
+ "defaultMode": "list",
1356
+ "views": {
1357
+ "list": {
1358
+ "label": "List conversations",
1359
+ "openWorld": false,
1360
+ "params": {
1361
+ "workspace_id": {
1362
+ "type": "string"
1363
+ },
1364
+ "account_id": {
1365
+ "type": "integer",
1366
+ "min": 1
1367
+ },
1368
+ "platform": {
1369
+ "type": "string"
1370
+ },
1371
+ "filter": {
1372
+ "type": "string"
1373
+ },
1374
+ "search": {
1375
+ "type": "string"
1376
+ },
1377
+ "limit": {
1378
+ "type": "integer",
1379
+ "min": 1,
1380
+ "max": 100
1381
+ },
1382
+ "offset": {
1383
+ "type": "integer",
1384
+ "min": 0
1385
+ }
1386
+ }
1387
+ },
1388
+ "conversation": {
1389
+ "label": "One conversation with its messages",
1390
+ "openWorld": false,
1391
+ "params": {
1392
+ "conversation_id": {
1393
+ "type": "string",
1394
+ "required": true
1395
+ },
1396
+ "workspace_id": {
1397
+ "type": "string"
1398
+ },
1399
+ "limit": {
1400
+ "type": "integer",
1401
+ "min": 1,
1402
+ "max": 100
1403
+ }
1404
+ },
1405
+ "when": [
1406
+ "conversation_id"
1407
+ ]
1408
+ }
1409
+ }
1410
+ },
1411
+ "manage_conversation": {
1412
+ "set": "inbox",
1413
+ "label": "Manage conversations",
1414
+ "selector": "action",
1415
+ "actions": {
1416
+ "send": {
1417
+ "label": "Send a DM",
1418
+ "destructive": false,
1419
+ "idempotent": false,
1420
+ "openWorld": true,
1421
+ "confirm": "preview",
1422
+ "nonce": true,
1423
+ "params": {
1424
+ "conversation_id": {
1425
+ "type": "string",
1426
+ "required": true
1427
+ },
1428
+ "content": {
1429
+ "type": "string",
1430
+ "required": true
1431
+ },
1432
+ "workspace_id": {
1433
+ "type": "string"
1434
+ }
1435
+ }
1436
+ },
1437
+ "sync": {
1438
+ "label": "Sync the inbox",
1439
+ "destructive": false,
1440
+ "idempotent": false,
1441
+ "openWorld": true,
1442
+ "confirm": "none",
1443
+ "params": {
1444
+ "account_id": {
1445
+ "type": "integer",
1446
+ "min": 1,
1447
+ "required": true
1448
+ },
1449
+ "sync_type": {
1450
+ "type": "string",
1451
+ "enum": [
1452
+ "all",
1453
+ "dm",
1454
+ "comments"
1455
+ ]
1456
+ },
1457
+ "workspace_id": {
1458
+ "type": "string"
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+ },
1464
+ "list_comments": {
1465
+ "set": "inbox",
1466
+ "label": "Comments",
1467
+ "selector": "params",
1468
+ "defaultMode": "list",
1469
+ "views": {
1470
+ "list": {
1471
+ "label": "List comments",
1472
+ "openWorld": false,
1473
+ "params": {
1474
+ "workspace_id": {
1475
+ "type": "string"
1476
+ },
1477
+ "account_id": {
1478
+ "type": "integer",
1479
+ "min": 1
1480
+ },
1481
+ "platform": {
1482
+ "type": "string"
1483
+ },
1484
+ "filter": {
1485
+ "type": "string"
1486
+ },
1487
+ "search": {
1488
+ "type": "string"
1489
+ },
1490
+ "limit": {
1491
+ "type": "integer",
1492
+ "min": 1,
1493
+ "max": 100
1494
+ },
1495
+ "offset": {
1496
+ "type": "integer",
1497
+ "min": 0
1498
+ }
1499
+ }
1500
+ },
1501
+ "comment": {
1502
+ "label": "One comment with its replies",
1503
+ "openWorld": false,
1504
+ "params": {
1505
+ "comment_id": {
1506
+ "type": "string",
1507
+ "required": true
1508
+ },
1509
+ "workspace_id": {
1510
+ "type": "string"
1511
+ }
1512
+ },
1513
+ "when": [
1514
+ "comment_id"
1515
+ ]
1516
+ }
1517
+ }
1518
+ },
1519
+ "manage_comment": {
1520
+ "set": "inbox",
1521
+ "label": "Manage comments",
1522
+ "selector": "action",
1523
+ "actions": {
1524
+ "reply": {
1525
+ "label": "Reply to a comment",
1526
+ "destructive": false,
1527
+ "idempotent": false,
1528
+ "openWorld": true,
1529
+ "confirm": "preview",
1530
+ "nonce": true,
1531
+ "params": {
1532
+ "comment_id": {
1533
+ "type": "string",
1534
+ "required": true
1535
+ },
1536
+ "content": {
1537
+ "type": "string",
1538
+ "required": true
1539
+ },
1540
+ "type": {
1541
+ "type": "string",
1542
+ "enum": [
1543
+ "public",
1544
+ "private"
1545
+ ]
1546
+ },
1547
+ "workspace_id": {
1548
+ "type": "string"
1549
+ }
1550
+ }
1551
+ },
1552
+ "update": {
1553
+ "label": "Hide or mark read",
1554
+ "destructive": false,
1555
+ "idempotent": true,
1556
+ "openWorld": true,
1557
+ "confirm": "none",
1558
+ "params": {
1559
+ "comment_id": {
1560
+ "type": "string",
1561
+ "required": true
1562
+ },
1563
+ "is_hidden": {
1564
+ "type": "boolean"
1565
+ },
1566
+ "is_read": {
1567
+ "type": "boolean"
1568
+ },
1569
+ "workspace_id": {
1570
+ "type": "string"
1571
+ }
1572
+ }
1573
+ },
1574
+ "delete": {
1575
+ "label": "Delete a comment",
1576
+ "destructive": true,
1577
+ "idempotent": true,
1578
+ "openWorld": true,
1579
+ "confirm": "preview",
1580
+ "params": {
1581
+ "comment_id": {
1582
+ "type": "string",
1583
+ "required": true
1584
+ },
1585
+ "workspace_id": {
1586
+ "type": "string"
1587
+ }
1588
+ }
1589
+ }
1590
+ }
1591
+ },
1592
+ "list_activity": {
1593
+ "set": "core",
1594
+ "label": "Activity feed",
1595
+ "readOnly": true,
1596
+ "destructive": false,
1597
+ "idempotent": true,
1598
+ "openWorld": false,
1599
+ "confirm": "none"
1600
+ },
1601
+ "list_webhooks": {
1602
+ "set": "admin",
1603
+ "label": "Webhooks",
1604
+ "readOnly": true,
1605
+ "destructive": false,
1606
+ "idempotent": true,
1607
+ "openWorld": false,
1608
+ "confirm": "none"
1609
+ },
1610
+ "create_webhook": {
1611
+ "set": "admin",
1612
+ "label": "Create a webhook",
1613
+ "exception": {
1614
+ "category": "secret",
1615
+ "reason": "Returns the webhook signing secret once."
1616
+ },
1617
+ "readOnly": false,
1618
+ "destructive": false,
1619
+ "idempotent": false,
1620
+ "openWorld": true,
1621
+ "confirm": "confirm"
1622
+ },
1623
+ "manage_webhook": {
1624
+ "set": "admin",
1625
+ "label": "Manage a webhook",
1626
+ "selector": "action",
1627
+ "actions": {
1628
+ "update": {
1629
+ "label": "Update a webhook",
1630
+ "destructive": true,
1631
+ "idempotent": true,
1632
+ "openWorld": true,
1633
+ "confirm": "confirm",
1634
+ "params": {
1635
+ "webhook_id": {
1636
+ "type": "string",
1637
+ "required": true
1638
+ },
1639
+ "url": {
1640
+ "type": "string"
1641
+ },
1642
+ "events": {
1643
+ "type": "array"
1644
+ },
1645
+ "workspace_id": {
1646
+ "type": "string",
1647
+ "nullable": true
1648
+ },
1649
+ "description": {
1650
+ "type": "string",
1651
+ "nullable": true
1652
+ },
1653
+ "is_active": {
1654
+ "type": "boolean"
1655
+ }
1656
+ }
1657
+ },
1658
+ "delete": {
1659
+ "label": "Delete a webhook",
1660
+ "destructive": true,
1661
+ "idempotent": true,
1662
+ "openWorld": true,
1663
+ "confirm": "preview",
1664
+ "params": {
1665
+ "webhook_id": {
1666
+ "type": "string",
1667
+ "required": true
1668
+ }
1669
+ }
1670
+ },
1671
+ "test": {
1672
+ "label": "Send a test delivery",
1673
+ "destructive": false,
1674
+ "idempotent": false,
1675
+ "openWorld": true,
1676
+ "confirm": "confirm",
1677
+ "params": {
1678
+ "webhook_id": {
1679
+ "type": "string",
1680
+ "required": true
1681
+ }
1682
+ }
1683
+ }
1684
+ }
1685
+ },
1686
+ "get_credits": {
1687
+ "set": "core",
1688
+ "label": "AI credits",
1689
+ "exception": {
1690
+ "category": "money",
1691
+ "reason": "Reports the AI credit wallet balance the caller can spend."
1692
+ },
1693
+ "readOnly": true,
1694
+ "destructive": false,
1695
+ "idempotent": true,
1696
+ "openWorld": true,
1697
+ "confirm": "none"
1698
+ },
1699
+ "get_subscription": {
1700
+ "set": "billing",
1701
+ "label": "Subscription",
1702
+ "exception": {
1703
+ "category": "money",
1704
+ "reason": "Reads the paid plan; kept beside the billing actions that change it."
1705
+ },
1706
+ "readOnly": true,
1707
+ "destructive": false,
1708
+ "idempotent": true,
1709
+ "openWorld": true,
1710
+ "confirm": "none"
1711
+ },
1712
+ "cancel_subscription": {
1713
+ "set": "billing",
1714
+ "label": "Cancel subscription",
1715
+ "exception": {
1716
+ "category": "money",
1717
+ "reason": "Changes the paid plan."
1718
+ },
1719
+ "readOnly": false,
1720
+ "destructive": true,
1721
+ "idempotent": true,
1722
+ "openWorld": true,
1723
+ "confirm": "confirm"
1724
+ },
1725
+ "pause_subscription": {
1726
+ "set": "billing",
1727
+ "label": "Pause subscription",
1728
+ "exception": {
1729
+ "category": "money",
1730
+ "reason": "Changes the paid plan."
1731
+ },
1732
+ "readOnly": false,
1733
+ "destructive": true,
1734
+ "idempotent": true,
1735
+ "openWorld": true,
1736
+ "confirm": "confirm"
1737
+ },
1738
+ "resume_subscription": {
1739
+ "set": "billing",
1740
+ "label": "Resume subscription",
1741
+ "exception": {
1742
+ "category": "money",
1743
+ "reason": "Changes the paid plan."
1744
+ },
1745
+ "readOnly": false,
1746
+ "destructive": false,
1747
+ "idempotent": true,
1748
+ "openWorld": true,
1749
+ "confirm": "none"
1750
+ },
1751
+ "downgrade_subscription": {
1752
+ "set": "billing",
1753
+ "label": "Downgrade subscription",
1754
+ "exception": {
1755
+ "category": "money",
1756
+ "reason": "Changes the paid plan."
1757
+ },
1758
+ "readOnly": false,
1759
+ "destructive": true,
1760
+ "idempotent": true,
1761
+ "openWorld": true,
1762
+ "confirm": "confirm"
1763
+ },
1764
+ "get_updates": {
1765
+ "set": "core",
1766
+ "label": "Product updates",
1767
+ "exception": {
1768
+ "category": "report",
1769
+ "reason": "Reads the posterly product updates feed, not the user's own records."
1770
+ },
1771
+ "readOnly": true,
1772
+ "destructive": false,
1773
+ "idempotent": true,
1774
+ "openWorld": false,
1775
+ "confirm": "none"
1776
+ }
1777
+ },
1778
+ "aliases": {
1779
+ "get_mcp_status": {
1780
+ "target": "whoami",
1781
+ "inject": {
1782
+ "view": "status"
1783
+ },
1784
+ "added": "2026-09-24",
1785
+ "sunset": "2027-01-12"
1786
+ },
1787
+ "get_connect_session": {
1788
+ "target": "list_accounts",
1789
+ "inject": {
1790
+ "view": "connect_session"
1791
+ },
1792
+ "added": "2026-09-24",
1793
+ "sunset": "2027-01-12"
1794
+ },
1795
+ "get_learned_voice": {
1796
+ "target": "list_accounts",
1797
+ "inject": {
1798
+ "view": "learned_voice"
1799
+ },
1800
+ "added": "2026-09-24",
1801
+ "sunset": "2027-01-12"
1802
+ },
1803
+ "get_performance_profile": {
1804
+ "target": "list_accounts",
1805
+ "inject": {
1806
+ "view": "performance_profile"
1807
+ },
1808
+ "added": "2026-09-24",
1809
+ "sunset": "2027-01-12"
1810
+ },
1811
+ "get_platform_schema": {
1812
+ "target": "list_platforms",
1813
+ "inject": {
1814
+ "view": "schema"
1815
+ },
1816
+ "added": "2026-09-24",
1817
+ "sunset": "2027-01-12"
1818
+ },
1819
+ "get_connect_link": {
1820
+ "target": "list_platforms",
1821
+ "inject": {
1822
+ "view": "connect_link"
1823
+ },
1824
+ "rename": {
1825
+ "platform": "target"
1826
+ },
1827
+ "added": "2026-09-24",
1828
+ "sunset": "2027-01-12"
1829
+ },
1830
+ "get_brand": {
1831
+ "target": "list_brands",
1832
+ "inject": {
1833
+ "view": "brand"
1834
+ },
1835
+ "added": "2026-09-24",
1836
+ "sunset": "2027-01-12"
1837
+ },
1838
+ "list_brand_accounts": {
1839
+ "target": "list_brands",
1840
+ "inject": {
1841
+ "view": "accounts"
1842
+ },
1843
+ "added": "2026-09-24",
1844
+ "sunset": "2027-01-12"
1845
+ },
1846
+ "get_brand_profile": {
1847
+ "target": "list_brands",
1848
+ "inject": {
1849
+ "view": "profile"
1850
+ },
1851
+ "added": "2026-09-24",
1852
+ "sunset": "2027-01-12"
1853
+ },
1854
+ "get_post_missing": {
1855
+ "target": "get_post",
1856
+ "inject": {
1857
+ "view": "missing"
1858
+ },
1859
+ "added": "2026-09-24",
1860
+ "sunset": "2027-01-12"
1861
+ },
1862
+ "update_post_status": {
1863
+ "target": "update_post",
1864
+ "mode": "status",
1865
+ "added": "2026-09-24",
1866
+ "sunset": "2027-01-12"
1867
+ },
1868
+ "update_post_release_id": {
1869
+ "target": "update_post",
1870
+ "mode": "release_id",
1871
+ "added": "2026-09-24",
1872
+ "sunset": "2027-01-12"
1873
+ },
1874
+ "delete_post_group": {
1875
+ "target": "delete_post",
1876
+ "mode": "group",
1877
+ "legacyConfirm": true,
1878
+ "added": "2026-09-24",
1879
+ "sunset": "2027-01-12"
1880
+ },
1881
+ "upload_media_from_url": {
1882
+ "target": "upload_media",
1883
+ "mode": "url",
1884
+ "added": "2026-09-24",
1885
+ "sunset": "2027-01-12"
1886
+ },
1887
+ "get_account_analytics": {
1888
+ "target": "list_analytics",
1889
+ "inject": {
1890
+ "view": "accounts"
1891
+ },
1892
+ "added": "2026-09-24",
1893
+ "sunset": "2027-01-12"
1894
+ },
1895
+ "get_post_analytics": {
1896
+ "target": "list_analytics",
1897
+ "inject": {
1898
+ "view": "posts"
1899
+ },
1900
+ "added": "2026-09-24",
1901
+ "sunset": "2027-01-12"
1902
+ },
1903
+ "get_post_insights": {
1904
+ "target": "list_analytics",
1905
+ "inject": {
1906
+ "view": "insights"
1907
+ },
1908
+ "added": "2026-09-24",
1909
+ "sunset": "2027-01-12"
1910
+ },
1911
+ "get_image_job": {
1912
+ "target": "list_jobs",
1913
+ "inject": {
1914
+ "type": "image"
1915
+ },
1916
+ "added": "2026-09-24",
1917
+ "sunset": "2027-01-12"
1918
+ },
1919
+ "get_video_job": {
1920
+ "target": "list_jobs",
1921
+ "inject": {
1922
+ "type": "video"
1923
+ },
1924
+ "added": "2026-09-24",
1925
+ "sunset": "2027-01-12"
1926
+ },
1927
+ "get_comment": {
1928
+ "target": "list_comments",
1929
+ "mode": "comment",
1930
+ "added": "2026-09-24",
1931
+ "sunset": "2027-01-12"
1932
+ },
1933
+ "reply_to_comment": {
1934
+ "target": "manage_comment",
1935
+ "inject": {
1936
+ "action": "reply"
1937
+ },
1938
+ "legacyConfirm": true,
1939
+ "added": "2026-09-24",
1940
+ "sunset": "2027-01-12"
1941
+ },
1942
+ "update_comment": {
1943
+ "target": "manage_comment",
1944
+ "inject": {
1945
+ "action": "update"
1946
+ },
1947
+ "added": "2026-09-24",
1948
+ "sunset": "2027-01-12"
1949
+ },
1950
+ "delete_comment": {
1951
+ "target": "manage_comment",
1952
+ "inject": {
1953
+ "action": "delete"
1954
+ },
1955
+ "legacyConfirm": true,
1956
+ "added": "2026-09-24",
1957
+ "sunset": "2027-01-12"
1958
+ },
1959
+ "get_conversation": {
1960
+ "target": "list_conversations",
1961
+ "mode": "conversation",
1962
+ "added": "2026-09-24",
1963
+ "sunset": "2027-01-12"
1964
+ },
1965
+ "send_message": {
1966
+ "target": "manage_conversation",
1967
+ "inject": {
1968
+ "action": "send"
1969
+ },
1970
+ "legacyConfirm": true,
1971
+ "added": "2026-09-24",
1972
+ "sunset": "2027-01-12"
1973
+ },
1974
+ "sync_inbox": {
1975
+ "target": "manage_conversation",
1976
+ "inject": {
1977
+ "action": "sync"
1978
+ },
1979
+ "added": "2026-09-24",
1980
+ "sunset": "2027-01-12"
1981
+ },
1982
+ "get_google_business_review_link": {
1983
+ "target": "list_google_business_reviews",
1984
+ "inject": {
1985
+ "view": "review_link"
1986
+ },
1987
+ "added": "2026-09-24",
1988
+ "sunset": "2027-01-12"
1989
+ },
1990
+ "suggest_google_business_review_reply": {
1991
+ "target": "manage_google_business_review",
1992
+ "inject": {
1993
+ "action": "suggest_reply"
1994
+ },
1995
+ "added": "2026-09-24",
1996
+ "sunset": "2027-01-12"
1997
+ },
1998
+ "reply_google_business_review": {
1999
+ "target": "manage_google_business_review",
2000
+ "inject": {
2001
+ "action": "reply"
2002
+ },
2003
+ "legacyConfirm": true,
2004
+ "added": "2026-09-24",
2005
+ "sunset": "2027-01-12"
2006
+ },
2007
+ "delete_google_business_review_reply": {
2008
+ "target": "manage_google_business_review",
2009
+ "inject": {
2010
+ "action": "delete_reply"
2011
+ },
2012
+ "legacyConfirm": true,
2013
+ "added": "2026-09-24",
2014
+ "sunset": "2027-01-12"
2015
+ },
2016
+ "add_google_business_media": {
2017
+ "target": "manage_google_business_media",
2018
+ "inject": {
2019
+ "action": "add"
2020
+ },
2021
+ "legacyConfirm": true,
2022
+ "added": "2026-09-24",
2023
+ "sunset": "2027-01-12"
2024
+ },
2025
+ "delete_google_business_media": {
2026
+ "target": "manage_google_business_media",
2027
+ "inject": {
2028
+ "action": "delete"
2029
+ },
2030
+ "legacyConfirm": true,
2031
+ "added": "2026-09-24",
2032
+ "sunset": "2027-01-12"
2033
+ },
2034
+ "update_webhook": {
2035
+ "target": "manage_webhook",
2036
+ "inject": {
2037
+ "action": "update"
2038
+ },
2039
+ "added": "2026-09-24",
2040
+ "sunset": "2027-01-12"
2041
+ },
2042
+ "delete_webhook": {
2043
+ "target": "manage_webhook",
2044
+ "inject": {
2045
+ "action": "delete"
2046
+ },
2047
+ "legacyConfirm": true,
2048
+ "added": "2026-09-24",
2049
+ "sunset": "2027-01-12"
2050
+ },
2051
+ "test_webhook": {
2052
+ "target": "manage_webhook",
2053
+ "inject": {
2054
+ "action": "test"
2055
+ },
2056
+ "added": "2026-09-24",
2057
+ "sunset": "2027-01-12"
2058
+ },
2059
+ "create_oauth_client": {
2060
+ "target": "manage_oauth_client",
2061
+ "inject": {
2062
+ "action": "create"
2063
+ },
2064
+ "added": "2026-09-24",
2065
+ "sunset": "2027-01-12"
2066
+ },
2067
+ "update_oauth_client": {
2068
+ "target": "manage_oauth_client",
2069
+ "inject": {
2070
+ "action": "update"
2071
+ },
2072
+ "added": "2026-09-24",
2073
+ "sunset": "2027-01-12"
2074
+ },
2075
+ "delete_oauth_client": {
2076
+ "target": "manage_oauth_client",
2077
+ "inject": {
2078
+ "action": "delete"
2079
+ },
2080
+ "legacyConfirm": true,
2081
+ "added": "2026-09-24",
2082
+ "sunset": "2027-01-12"
2083
+ }
2084
+ }
2085
+ }