@apteva/integrations 0.2.3 → 0.3.1

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 (236) hide show
  1. package/package.json +1 -1
  2. package/src/apps/activecampaign.json +209 -0
  3. package/src/apps/activecollab.json +417 -0
  4. package/src/apps/airtable.json +235 -0
  5. package/src/apps/alpaca-trading.json +1554 -0
  6. package/src/apps/amadeus.json +225 -0
  7. package/src/apps/anthropic-api.json +96 -0
  8. package/src/apps/apify.json +203 -0
  9. package/src/apps/apollo.json +748 -0
  10. package/src/apps/apple-podcasts.json +116 -0
  11. package/src/apps/archive-api.json +104 -0
  12. package/src/apps/archive.json +151 -0
  13. package/src/apps/arduino-cloud.json +301 -0
  14. package/src/apps/arest.json +492 -0
  15. package/src/apps/asana.json +184 -0
  16. package/src/apps/ashby.json +176 -0
  17. package/src/apps/assemblyai.json +163 -0
  18. package/src/apps/attio.json +243 -0
  19. package/src/apps/aws-cloudfront.json +132 -0
  20. package/src/apps/aws-dynamodb.json +295 -0
  21. package/src/apps/aws-ec2.json +184 -0
  22. package/src/apps/aws-lambda.json +361 -0
  23. package/src/apps/aws-route53.json +110 -0
  24. package/src/apps/aws-s3.json +303 -0
  25. package/src/apps/aws-ses.json +556 -0
  26. package/src/apps/aws-sns.json +217 -0
  27. package/src/apps/aws-sqs.json +234 -0
  28. package/src/apps/axiom.json +123 -0
  29. package/src/apps/beehiiv.json +252 -0
  30. package/src/apps/binance-trading.json +555 -0
  31. package/src/apps/bitly.json +175 -0
  32. package/src/apps/bloobirds.json +246 -0
  33. package/src/apps/bluesky.json +201 -0
  34. package/src/apps/blynk.json +316 -0
  35. package/src/apps/booking-com.json +144 -0
  36. package/src/apps/box.json +289 -0
  37. package/src/apps/brevo.json +1423 -0
  38. package/src/apps/browse-ai.json +148 -0
  39. package/src/apps/bunny-cdn.json +330 -0
  40. package/src/apps/bunny-stream.json +387 -0
  41. package/src/apps/cal-com.json +240 -0
  42. package/src/apps/calendly.json +578 -0
  43. package/src/apps/calflow-calendar.json +706 -0
  44. package/src/apps/callrail.json +190 -0
  45. package/src/apps/canva.json +197 -0
  46. package/src/apps/cartesia.json +201 -0
  47. package/src/apps/castbase.json +753 -0
  48. package/src/apps/chargebee.json +226 -0
  49. package/src/apps/cleanster.json +359 -0
  50. package/src/apps/clicksend.json +278 -0
  51. package/src/apps/clickup.json +266 -0
  52. package/src/apps/clipkit.json +517 -0
  53. package/src/apps/close.json +359 -0
  54. package/src/apps/cloudflare.json +329 -0
  55. package/src/apps/cloudinary.json +164 -0
  56. package/src/apps/coda.json +288 -0
  57. package/src/apps/cohere.json +158 -0
  58. package/src/apps/coinbase.json +268 -0
  59. package/src/apps/composio.json +146 -0
  60. package/src/apps/confluence.json +270 -0
  61. package/src/apps/consensus.json +879 -0
  62. package/src/apps/contabo.json +733 -0
  63. package/src/apps/convertkit.json +211 -0
  64. package/src/apps/core-image.json +426 -0
  65. package/src/apps/core-video.json +1246 -0
  66. package/src/apps/craftcloud.json +298 -0
  67. package/src/apps/datadog.json +401 -0
  68. package/src/apps/dataforseo.json +1273 -0
  69. package/src/apps/deepseek.json +150 -0
  70. package/src/apps/dialpad.json +229 -0
  71. package/src/apps/discord.json +239 -0
  72. package/src/apps/dnsimple.json +405 -0
  73. package/src/apps/docusign.json +214 -0
  74. package/src/apps/docx.json +282 -0
  75. package/src/apps/dropbox.json +185 -0
  76. package/src/apps/duffel.json +231 -0
  77. package/src/apps/dux-soup.json +694 -0
  78. package/src/apps/dynadot.json +250 -0
  79. package/src/apps/elevenlabs.json +327 -0
  80. package/src/apps/eventbrite-events.json +598 -0
  81. package/src/apps/facebook-ads.json +1399 -0
  82. package/src/apps/facebook-api.json +282 -0
  83. package/src/apps/fal-ai.json +400 -0
  84. package/src/apps/fathom.json +86 -0
  85. package/src/apps/figma.json +162 -0
  86. package/src/apps/filestack.json +159 -0
  87. package/src/apps/firebase.json +271 -0
  88. package/src/apps/firecrawl.json +278 -0
  89. package/src/apps/folk.json +564 -0
  90. package/src/apps/forecast-app.json +377 -0
  91. package/src/apps/freshdesk.json +283 -0
  92. package/src/apps/gemini.json +528 -0
  93. package/src/apps/ghost.json +439 -0
  94. package/src/apps/gigs-marketplace.json +1442 -0
  95. package/src/apps/github.json +1479 -47
  96. package/src/apps/gitlab.json +448 -0
  97. package/src/apps/gmail.json +839 -28
  98. package/src/apps/gohighlevel.json +596 -0
  99. package/src/apps/google-ads.json +270 -0
  100. package/src/apps/google-calendar.json +996 -36
  101. package/src/apps/google-docs.json +278 -0
  102. package/src/apps/google-drive.json +360 -0
  103. package/src/apps/google-maps.json +473 -0
  104. package/src/apps/google-sheets.json +330 -0
  105. package/src/apps/gooten.json +411 -0
  106. package/src/apps/gravity-forms.json +385 -0
  107. package/src/apps/gusto.json +171 -0
  108. package/src/apps/hackernews.json +221 -0
  109. package/src/apps/harmonic.json +86 -0
  110. package/src/apps/helpscout.json +664 -0
  111. package/src/apps/hetzner.json +658 -0
  112. package/src/apps/heygen.json +184 -0
  113. package/src/apps/heyreach.json +388 -0
  114. package/src/apps/hospitable.json +340 -0
  115. package/src/apps/hostinger.json +374 -0
  116. package/src/apps/hubspot.json +682 -0
  117. package/src/apps/huggingface.json +97 -0
  118. package/src/apps/hunter.json +504 -0
  119. package/src/apps/ig-trading.json +849 -0
  120. package/src/apps/imaterialise.json +349 -0
  121. package/src/apps/instagram-api.json +538 -0
  122. package/src/apps/intercom.json +648 -0
  123. package/src/apps/jira.json +226 -0
  124. package/src/apps/klaviyo.json +199 -0
  125. package/src/apps/kling-ai.json +206 -0
  126. package/src/apps/kraken.json +870 -0
  127. package/src/apps/late.json +1056 -0
  128. package/src/apps/leadpages.json +243 -0
  129. package/src/apps/learning-platform.json +2244 -0
  130. package/src/apps/linear.json +184 -57
  131. package/src/apps/linkedin.json +179 -0
  132. package/src/apps/listen-notes.json +136 -0
  133. package/src/apps/lnk-bio.json +125 -0
  134. package/src/apps/loom.json +188 -0
  135. package/src/apps/luma.json +280 -0
  136. package/src/apps/mailchimp.json +238 -0
  137. package/src/apps/mailgun.json +310 -0
  138. package/src/apps/manychat.json +312 -0
  139. package/src/apps/marin-software.json +843 -0
  140. package/src/apps/media-downloader.json +157 -0
  141. package/src/apps/meetup-events.json +361 -0
  142. package/src/apps/meshy.json +248 -0
  143. package/src/apps/microsoft-teams.json +162 -0
  144. package/src/apps/monday.json +213 -0
  145. package/src/apps/mongodb-atlas.json +467 -0
  146. package/src/apps/namecheap.json +252 -0
  147. package/src/apps/nexar.json +289 -0
  148. package/src/apps/notion.json +530 -50
  149. package/src/apps/omnikit-analytics.json +374 -0
  150. package/src/apps/omnikit-api-gateway.json +660 -0
  151. package/src/apps/omnikit-billing.json +1781 -0
  152. package/src/apps/omnikit-cms.json +899 -0
  153. package/src/apps/omnikit-functions.json +329 -0
  154. package/src/apps/omnikit-intelligence.json +650 -0
  155. package/src/apps/omnikit-management.json +214 -0
  156. package/src/apps/omnikit-media.json +646 -0
  157. package/src/apps/omnikit-messaging.json +1826 -0
  158. package/src/apps/omnikit-redirects.json +209 -0
  159. package/src/apps/omnikit-webhooks.json +269 -0
  160. package/src/apps/omnikit-workflows.json +323 -0
  161. package/src/apps/openai-api.json +462 -0
  162. package/src/apps/openmeteo-weather.json +75 -0
  163. package/src/apps/optinmonster.json +244 -0
  164. package/src/apps/paidkit.json +1218 -0
  165. package/src/apps/paypal.json +254 -0
  166. package/src/apps/pdf.json +366 -0
  167. package/src/apps/pipedrive.json +255 -0
  168. package/src/apps/polymarket.json +653 -0
  169. package/src/apps/porkbun.json +417 -0
  170. package/src/apps/portfolio.json +501 -0
  171. package/src/apps/postmark.json +257 -0
  172. package/src/apps/printful.json +273 -0
  173. package/src/apps/printify.json +295 -0
  174. package/src/apps/producthunt.json +346 -0
  175. package/src/apps/pushover-notifications.json +113 -0
  176. package/src/apps/qonto.json +366 -0
  177. package/src/apps/quickbooks.json +234 -0
  178. package/src/apps/replicate.json +106 -0
  179. package/src/apps/rss.json +281 -0
  180. package/src/apps/salesflow.json +538 -0
  181. package/src/apps/salesforce-crm.json +216 -0
  182. package/src/apps/sap.json +256 -0
  183. package/src/apps/scaleway.json +911 -0
  184. package/src/apps/sculpteo.json +234 -0
  185. package/src/apps/sendgrid-email.json +233 -0
  186. package/src/apps/sendgrid.json +160 -35
  187. package/src/apps/shapeways.json +188 -0
  188. package/src/apps/shopify.json +1217 -0
  189. package/src/apps/skai.json +779 -0
  190. package/src/apps/slack.json +228 -38
  191. package/src/apps/slant3d.json +231 -0
  192. package/src/apps/slides.json +760 -0
  193. package/src/apps/smartly.json +504 -0
  194. package/src/apps/snov.json +467 -0
  195. package/src/apps/socialcast.json +553 -63
  196. package/src/apps/square.json +274 -0
  197. package/src/apps/storage-management.json +788 -0
  198. package/src/apps/storylane.json +180 -0
  199. package/src/apps/strapi.json +338 -0
  200. package/src/apps/stripe-payments.json +847 -0
  201. package/src/apps/stripe.json +472 -35
  202. package/src/apps/supabase.json +169 -0
  203. package/src/apps/supademo.json +115 -0
  204. package/src/apps/taskflow.json +714 -0
  205. package/src/apps/teamwork.json +457 -0
  206. package/src/apps/telegram.json +444 -0
  207. package/src/apps/thinger.json +458 -0
  208. package/src/apps/ticktick.json +169 -0
  209. package/src/apps/tiktok-api.json +406 -0
  210. package/src/apps/todoist.json +151 -0
  211. package/src/apps/together.json +123 -0
  212. package/src/apps/torrent.json +267 -0
  213. package/src/apps/trading.json +1012 -0
  214. package/src/apps/trading212.json +383 -0
  215. package/src/apps/trello.json +205 -0
  216. package/src/apps/tripo.json +157 -0
  217. package/src/apps/twilio.json +1008 -0
  218. package/src/apps/twitter-ads.json +875 -0
  219. package/src/apps/twitter-api.json +1151 -0
  220. package/src/apps/twitterapiio.json +548 -0
  221. package/src/apps/typeform.json +210 -0
  222. package/src/apps/vidforge.json +1020 -0
  223. package/src/apps/vonage.json +394 -0
  224. package/src/apps/vultr.json +225 -0
  225. package/src/apps/webflow.json +223 -0
  226. package/src/apps/wise.json +273 -0
  227. package/src/apps/wistia.json +283 -0
  228. package/src/apps/woocommerce.json +288 -0
  229. package/src/apps/wordpress.json +1675 -0
  230. package/src/apps/xero.json +257 -0
  231. package/src/apps/youtube-api.json +861 -0
  232. package/src/apps/zendesk.json +295 -0
  233. package/src/apps/zite.json +173 -0
  234. package/src/apps/zoho-crm.json +386 -0
  235. package/src/apps/zoo.json +193 -0
  236. package/src/apps/zoom.json +334 -0
@@ -0,0 +1,1056 @@
1
+ {
2
+ "slug": "late",
3
+ "name": "Late",
4
+ "description": "Unified social media API - post to 13 platforms (Twitter, Instagram, TikTok, LinkedIn, Facebook, YouTube, Threads, Reddit, Pinterest, Bluesky, Telegram, Google Business, Snapchat) with a single API call",
5
+ "logo": "https://www.google.com/s2/favicons?domain=getlate.dev&sz=128",
6
+ "categories": [
7
+ "social-media",
8
+ "scheduling",
9
+ "posting",
10
+ "analytics",
11
+ "marketing"
12
+ ],
13
+ "base_url": "https://getlate.dev/api/v1",
14
+ "auth": {
15
+ "types": [
16
+ "bearer"
17
+ ],
18
+ "headers": {
19
+ "Authorization": "Bearer {{token}}"
20
+ },
21
+ "credential_fields": [
22
+ {
23
+ "name": "api_key",
24
+ "label": "api_key"
25
+ }
26
+ ]
27
+ },
28
+ "tools": [
29
+ {
30
+ "name": "create_post",
31
+ "description": "Create and schedule a post to one or multiple social media platforms. IMPORTANT: First call late-list-accounts to get the accountId for each platform you want to post to. The platforms array requires objects with both platform name AND accountId. Use content (not text) for the post body. If scheduledFor is omitted the post publishes immediately.",
32
+ "method": "POST",
33
+ "path": "/posts",
34
+ "input_schema": {
35
+ "type": "object",
36
+ "properties": {
37
+ "content": {
38
+ "type": "string",
39
+ "description": "Post text/content. Optional if all platforms have customContent or if only posting media."
40
+ },
41
+ "platforms": {
42
+ "type": "array",
43
+ "description": "REQUIRED. Array of platform objects specifying where to post. Each object must have 'platform' (platform name) and 'accountId' (from late-list-accounts). Example: [{\"platform\":\"twitter\",\"accountId\":\"acc_123\"},{\"platform\":\"instagram\",\"accountId\":\"acc_456\"}]",
44
+ "items": {
45
+ "type": "object",
46
+ "properties": {
47
+ "platform": {
48
+ "type": "string",
49
+ "enum": [
50
+ "twitter",
51
+ "instagram",
52
+ "tiktok",
53
+ "linkedin",
54
+ "facebook",
55
+ "youtube",
56
+ "threads",
57
+ "reddit",
58
+ "pinterest",
59
+ "bluesky",
60
+ "telegram",
61
+ "google_business",
62
+ "snapchat"
63
+ ]
64
+ },
65
+ "accountId": {
66
+ "type": "string",
67
+ "description": "Account ID from late-list-accounts"
68
+ }
69
+ },
70
+ "required": [
71
+ "platform",
72
+ "accountId"
73
+ ]
74
+ }
75
+ },
76
+ "mediaUrls": {
77
+ "type": "array",
78
+ "description": "Array of media URLs (images, videos) to attach to the post",
79
+ "items": {
80
+ "type": "string"
81
+ }
82
+ },
83
+ "scheduledFor": {
84
+ "type": "string",
85
+ "description": "ISO 8601 timestamp for when to publish (e.g., 2026-03-01T10:00:00Z). If omitted, posts immediately."
86
+ },
87
+ "timezone": {
88
+ "type": "string",
89
+ "description": "Timezone for scheduledFor interpretation (e.g., 'America/New_York', 'Europe/Paris')"
90
+ },
91
+ "publishNow": {
92
+ "type": "boolean",
93
+ "description": "Set to true to publish immediately instead of scheduling"
94
+ },
95
+ "profileId": {
96
+ "type": "string",
97
+ "description": "Profile ID to associate the post with"
98
+ },
99
+ "firstComment": {
100
+ "type": "string",
101
+ "description": "Text to auto-post as the first comment after publishing (useful for hashtags on Instagram, additional links, etc.)"
102
+ },
103
+ "altText": {
104
+ "type": "string",
105
+ "description": "Accessibility description for attached media (images/videos)"
106
+ },
107
+ "queuedFromProfile": {
108
+ "type": "string",
109
+ "description": "Profile ID to use queue-based scheduling. The post will be published at the next available queue slot time for this profile, instead of using scheduledFor."
110
+ },
111
+ "customContent": {
112
+ "type": "object",
113
+ "description": "Per-platform text overrides. Keys are platform names, values are the custom text for that platform. Example: {\"twitter\":\"Short tweet version\",\"linkedin\":\"Longer professional version\"}"
114
+ },
115
+ "platformOptions": {
116
+ "type": "object",
117
+ "description": "Platform-specific settings. Example: {\"instagram\":{\"shareToStory\":true},\"youtube\":{\"privacy\":\"public\",\"title\":\"Video Title\"},\"reddit\":{\"subreddit\":\"marketing\",\"title\":\"Post Title\"}}"
118
+ }
119
+ },
120
+ "required": [
121
+ "platforms"
122
+ ]
123
+ }
124
+ },
125
+ {
126
+ "name": "get_post",
127
+ "description": "Retrieve details and status of a specific post by ID",
128
+ "method": "GET",
129
+ "path": "/posts/%7B%7BpostId%7D%7D",
130
+ "input_schema": {
131
+ "type": "object",
132
+ "properties": {
133
+ "postId": {
134
+ "type": "string",
135
+ "description": "The ID of the post to retrieve"
136
+ }
137
+ },
138
+ "required": [
139
+ "postId"
140
+ ]
141
+ }
142
+ },
143
+ {
144
+ "name": "update_post",
145
+ "description": "Modify a scheduled post before it's published",
146
+ "method": "PATCH",
147
+ "path": "/posts/%7B%7BpostId%7D%7D",
148
+ "input_schema": {
149
+ "type": "object",
150
+ "properties": {
151
+ "postId": {
152
+ "type": "string",
153
+ "description": "The ID of the post to update"
154
+ },
155
+ "text": {
156
+ "type": "string",
157
+ "description": "New post content/text"
158
+ },
159
+ "platforms": {
160
+ "type": "array",
161
+ "description": "Updated array of platform names",
162
+ "items": {
163
+ "type": "string"
164
+ }
165
+ },
166
+ "mediaUrls": {
167
+ "type": "array",
168
+ "description": "Updated media URLs",
169
+ "items": {
170
+ "type": "string"
171
+ }
172
+ },
173
+ "scheduledFor": {
174
+ "type": "string",
175
+ "description": "New scheduled time (ISO 8601)"
176
+ }
177
+ },
178
+ "required": [
179
+ "postId"
180
+ ]
181
+ }
182
+ },
183
+ {
184
+ "name": "delete_post",
185
+ "description": "Remove a post from the queue",
186
+ "method": "DELETE",
187
+ "path": "/posts/%7B%7BpostId%7D%7D",
188
+ "input_schema": {
189
+ "type": "object",
190
+ "properties": {
191
+ "postId": {
192
+ "type": "string",
193
+ "description": "The ID of the post to delete"
194
+ }
195
+ },
196
+ "required": [
197
+ "postId"
198
+ ]
199
+ }
200
+ },
201
+ {
202
+ "name": "list_posts",
203
+ "description": "List all posts with optional filtering by status, profile, or platform",
204
+ "method": "GET",
205
+ "path": "/posts",
206
+ "input_schema": {
207
+ "type": "object",
208
+ "properties": {
209
+ "status": {
210
+ "type": "string",
211
+ "description": "Filter by post status",
212
+ "enum": [
213
+ "scheduled",
214
+ "published",
215
+ "failed",
216
+ "draft"
217
+ ]
218
+ },
219
+ "profileId": {
220
+ "type": "string",
221
+ "description": "Filter by profile ID"
222
+ },
223
+ "platform": {
224
+ "type": "string",
225
+ "description": "Filter by platform"
226
+ },
227
+ "limit": {
228
+ "type": "integer",
229
+ "description": "Maximum number of posts to return",
230
+ "default": 50
231
+ },
232
+ "cursor": {
233
+ "type": "string",
234
+ "description": "Pagination cursor"
235
+ }
236
+ }
237
+ }
238
+ },
239
+ {
240
+ "name": "list_profiles",
241
+ "description": "List all profiles (containers for organizing social accounts)",
242
+ "method": "GET",
243
+ "path": "/profiles",
244
+ "input_schema": {
245
+ "type": "object",
246
+ "properties": {
247
+ "limit": {
248
+ "type": "integer",
249
+ "description": "Maximum number of profiles to return",
250
+ "default": 50
251
+ }
252
+ }
253
+ }
254
+ },
255
+ {
256
+ "name": "create_profile",
257
+ "description": "Create a new profile to organize social accounts",
258
+ "method": "POST",
259
+ "path": "/profiles",
260
+ "input_schema": {
261
+ "type": "object",
262
+ "properties": {
263
+ "name": {
264
+ "type": "string",
265
+ "description": "Profile name"
266
+ },
267
+ "description": {
268
+ "type": "string",
269
+ "description": "Profile description"
270
+ }
271
+ },
272
+ "required": [
273
+ "name"
274
+ ]
275
+ }
276
+ },
277
+ {
278
+ "name": "get_profile",
279
+ "description": "Get details of a specific profile",
280
+ "method": "GET",
281
+ "path": "/profiles/%7B%7BprofileId%7D%7D",
282
+ "input_schema": {
283
+ "type": "object",
284
+ "properties": {
285
+ "profileId": {
286
+ "type": "string",
287
+ "description": "Profile ID to retrieve"
288
+ }
289
+ },
290
+ "required": [
291
+ "profileId"
292
+ ]
293
+ }
294
+ },
295
+ {
296
+ "name": "delete_profile",
297
+ "description": "Delete a profile and disconnect all associated accounts",
298
+ "method": "DELETE",
299
+ "path": "/profiles/%7B%7BprofileId%7D%7D",
300
+ "input_schema": {
301
+ "type": "object",
302
+ "properties": {
303
+ "profileId": {
304
+ "type": "string",
305
+ "description": "Profile ID to delete"
306
+ }
307
+ },
308
+ "required": [
309
+ "profileId"
310
+ ]
311
+ }
312
+ },
313
+ {
314
+ "name": "list_accounts",
315
+ "description": "List all connected social media accounts",
316
+ "method": "GET",
317
+ "path": "/accounts",
318
+ "input_schema": {
319
+ "type": "object",
320
+ "properties": {
321
+ "profileId": {
322
+ "type": "string",
323
+ "description": "Filter by profile ID"
324
+ },
325
+ "platform": {
326
+ "type": "string",
327
+ "description": "Filter by platform"
328
+ }
329
+ }
330
+ }
331
+ },
332
+ {
333
+ "name": "connect_account",
334
+ "description": "Get OAuth URL to connect a social media account. User must visit the returned URL to complete OAuth flow.",
335
+ "method": "GET",
336
+ "path": "/connect/%7B%7Bplatform%7D%7D",
337
+ "input_schema": {
338
+ "type": "object",
339
+ "properties": {
340
+ "platform": {
341
+ "type": "string",
342
+ "description": "Platform to connect",
343
+ "enum": [
344
+ "twitter",
345
+ "instagram",
346
+ "tiktok",
347
+ "linkedin",
348
+ "facebook",
349
+ "youtube",
350
+ "threads",
351
+ "reddit",
352
+ "pinterest",
353
+ "bluesky",
354
+ "telegram",
355
+ "google_business",
356
+ "snapchat"
357
+ ]
358
+ },
359
+ "profileId": {
360
+ "type": "string",
361
+ "description": "Profile ID to add the account to"
362
+ },
363
+ "redirectUrl": {
364
+ "type": "string",
365
+ "description": "Custom redirect URL after OAuth"
366
+ }
367
+ },
368
+ "required": [
369
+ "platform"
370
+ ]
371
+ }
372
+ },
373
+ {
374
+ "name": "disconnect_account",
375
+ "description": "Disconnect a social media account",
376
+ "method": "DELETE",
377
+ "path": "/accounts/%7B%7BaccountId%7D%7D",
378
+ "input_schema": {
379
+ "type": "object",
380
+ "properties": {
381
+ "accountId": {
382
+ "type": "string",
383
+ "description": "The ID of the account to disconnect"
384
+ }
385
+ },
386
+ "required": [
387
+ "accountId"
388
+ ]
389
+ }
390
+ },
391
+ {
392
+ "name": "get_analytics",
393
+ "description": "Retrieve engagement metrics (likes, shares, reach, impressions, clicks, views) across platforms",
394
+ "method": "GET",
395
+ "path": "/analytics",
396
+ "input_schema": {
397
+ "type": "object",
398
+ "properties": {
399
+ "postId": {
400
+ "type": "string",
401
+ "description": "Get analytics for a specific post"
402
+ },
403
+ "profileId": {
404
+ "type": "string",
405
+ "description": "Get analytics for a specific profile"
406
+ },
407
+ "platform": {
408
+ "type": "string",
409
+ "description": "Filter by platform"
410
+ },
411
+ "startDate": {
412
+ "type": "string",
413
+ "description": "Start date for analytics period (ISO 8601)"
414
+ },
415
+ "endDate": {
416
+ "type": "string",
417
+ "description": "End date for analytics period (ISO 8601)"
418
+ }
419
+ }
420
+ }
421
+ },
422
+ {
423
+ "name": "list_conversations",
424
+ "description": "List unified inbox conversations (DMs, comments, reviews). Requires Inbox addon subscription.",
425
+ "method": "GET",
426
+ "path": "/messages/conversations",
427
+ "input_schema": {
428
+ "type": "object",
429
+ "properties": {
430
+ "platform": {
431
+ "type": "string",
432
+ "description": "Filter by platform"
433
+ },
434
+ "type": {
435
+ "type": "string",
436
+ "description": "Filter by conversation type",
437
+ "enum": [
438
+ "dm",
439
+ "comment",
440
+ "review"
441
+ ]
442
+ },
443
+ "status": {
444
+ "type": "string",
445
+ "description": "Filter by status",
446
+ "enum": [
447
+ "unread",
448
+ "read",
449
+ "archived"
450
+ ]
451
+ },
452
+ "limit": {
453
+ "type": "integer",
454
+ "description": "Maximum number of conversations to return",
455
+ "default": 50
456
+ }
457
+ }
458
+ }
459
+ },
460
+ {
461
+ "name": "get_conversation",
462
+ "description": "Get details of a specific conversation including message history",
463
+ "method": "GET",
464
+ "path": "/messages/conversations/%7B%7BconversationId%7D%7D",
465
+ "input_schema": {
466
+ "type": "object",
467
+ "properties": {
468
+ "conversationId": {
469
+ "type": "string",
470
+ "description": "The ID of the conversation"
471
+ }
472
+ },
473
+ "required": [
474
+ "conversationId"
475
+ ]
476
+ }
477
+ },
478
+ {
479
+ "name": "reply_conversation",
480
+ "description": "Reply to a DM, comment, or review. Requires Inbox addon subscription.",
481
+ "method": "POST",
482
+ "path": "/messages/conversations/%7B%7BconversationId%7D%7D/messages",
483
+ "input_schema": {
484
+ "type": "object",
485
+ "properties": {
486
+ "conversationId": {
487
+ "type": "string",
488
+ "description": "The ID of the conversation to reply to"
489
+ },
490
+ "text": {
491
+ "type": "string",
492
+ "description": "Reply message text"
493
+ }
494
+ },
495
+ "required": [
496
+ "conversationId",
497
+ "text"
498
+ ]
499
+ }
500
+ },
501
+ {
502
+ "name": "get_webhooks",
503
+ "description": "Get current webhook configuration",
504
+ "method": "GET",
505
+ "path": "/webhooks",
506
+ "input_schema": {
507
+ "type": "object",
508
+ "properties": {}
509
+ }
510
+ },
511
+ {
512
+ "name": "configure_webhook",
513
+ "description": "Configure webhooks for post events (scheduled, published, failed, partial) and account events (connected, disconnected)",
514
+ "method": "POST",
515
+ "path": "/webhooks",
516
+ "input_schema": {
517
+ "type": "object",
518
+ "properties": {
519
+ "url": {
520
+ "type": "string",
521
+ "description": "Webhook endpoint URL"
522
+ },
523
+ "events": {
524
+ "type": "array",
525
+ "description": "Events to subscribe to",
526
+ "items": {
527
+ "type": "string",
528
+ "enum": [
529
+ "post.scheduled",
530
+ "post.published",
531
+ "post.failed",
532
+ "post.partial",
533
+ "account.connected",
534
+ "account.disconnected"
535
+ ]
536
+ }
537
+ },
538
+ "secret": {
539
+ "type": "string",
540
+ "description": "Secret for HMAC-SHA256 signature verification"
541
+ },
542
+ "enabled": {
543
+ "type": "boolean",
544
+ "description": "Enable or disable the webhook",
545
+ "default": true
546
+ }
547
+ },
548
+ "required": [
549
+ "url",
550
+ "events"
551
+ ]
552
+ }
553
+ },
554
+ {
555
+ "name": "delete_webhook",
556
+ "description": "Delete a webhook by ID",
557
+ "method": "DELETE",
558
+ "path": "/webhooks/%7B%7BwebhookId%7D%7D",
559
+ "input_schema": {
560
+ "type": "object",
561
+ "properties": {
562
+ "webhookId": {
563
+ "type": "string",
564
+ "description": "The ID of the webhook to delete"
565
+ }
566
+ },
567
+ "required": [
568
+ "webhookId"
569
+ ]
570
+ }
571
+ },
572
+ {
573
+ "name": "retry_post",
574
+ "description": "Retry publishing a failed post",
575
+ "method": "POST",
576
+ "path": "/posts/%7B%7BpostId%7D%7D/retry",
577
+ "input_schema": {
578
+ "type": "object",
579
+ "properties": {
580
+ "postId": {
581
+ "type": "string",
582
+ "description": "The ID of the failed post to retry"
583
+ }
584
+ },
585
+ "required": [
586
+ "postId"
587
+ ]
588
+ }
589
+ },
590
+ {
591
+ "name": "unpublish_post",
592
+ "description": "Remove a published post from a specific platform",
593
+ "method": "DELETE",
594
+ "path": "/posts/%7B%7BpostId%7D%7D/platform/%7B%7Bplatform%7D%7D",
595
+ "input_schema": {
596
+ "type": "object",
597
+ "properties": {
598
+ "postId": {
599
+ "type": "string",
600
+ "description": "The ID of the post"
601
+ },
602
+ "platform": {
603
+ "type": "string",
604
+ "description": "Platform to unpublish from",
605
+ "enum": [
606
+ "twitter",
607
+ "instagram",
608
+ "tiktok",
609
+ "linkedin",
610
+ "facebook",
611
+ "youtube",
612
+ "threads",
613
+ "reddit",
614
+ "pinterest",
615
+ "bluesky",
616
+ "telegram",
617
+ "google_business",
618
+ "snapchat"
619
+ ]
620
+ }
621
+ },
622
+ "required": [
623
+ "postId",
624
+ "platform"
625
+ ]
626
+ }
627
+ },
628
+ {
629
+ "name": "bulk_upload",
630
+ "description": "Upload multiple posts at once via CSV-style array",
631
+ "method": "POST",
632
+ "path": "/posts/bulk",
633
+ "input_schema": {
634
+ "type": "object",
635
+ "properties": {
636
+ "posts": {
637
+ "type": "array",
638
+ "description": "Array of post objects, each with text, platforms, mediaUrls, scheduledFor",
639
+ "items": {
640
+ "type": "object"
641
+ }
642
+ }
643
+ },
644
+ "required": [
645
+ "posts"
646
+ ]
647
+ }
648
+ },
649
+ {
650
+ "name": "media_presigned_url",
651
+ "description": "Get a presigned URL for uploading media files (images, videos) before attaching to posts",
652
+ "method": "GET",
653
+ "path": "/media/presigned-url",
654
+ "input_schema": {
655
+ "type": "object",
656
+ "properties": {
657
+ "fileName": {
658
+ "type": "string",
659
+ "description": "Filename with extension (e.g., 'photo.jpg', 'video.mp4')"
660
+ },
661
+ "contentType": {
662
+ "type": "string",
663
+ "description": "MIME type (e.g., 'image/jpeg', 'video/mp4')"
664
+ }
665
+ }
666
+ }
667
+ },
668
+ {
669
+ "name": "account_health",
670
+ "description": "Check the connection health status of a connected social media account",
671
+ "method": "GET",
672
+ "path": "/accounts/%7B%7BaccountId|health%7D%7D/health",
673
+ "input_schema": {
674
+ "type": "object",
675
+ "properties": {
676
+ "accountId": {
677
+ "type": "string",
678
+ "description": "Account ID to check health for. Use 'all' or omit for all accounts."
679
+ }
680
+ }
681
+ }
682
+ },
683
+ {
684
+ "name": "list_comments",
685
+ "description": "List comments across connected social media accounts",
686
+ "method": "GET",
687
+ "path": "/comments",
688
+ "input_schema": {
689
+ "type": "object",
690
+ "properties": {
691
+ "postId": {
692
+ "type": "string",
693
+ "description": "Filter comments for a specific post"
694
+ },
695
+ "limit": {
696
+ "type": "integer",
697
+ "description": "Maximum number of comments to return",
698
+ "default": 50
699
+ }
700
+ }
701
+ }
702
+ },
703
+ {
704
+ "name": "reply_comment",
705
+ "description": "Reply to a comment on a post",
706
+ "method": "POST",
707
+ "path": "/comments/posts/%7B%7BpostId%7D%7D/reply",
708
+ "input_schema": {
709
+ "type": "object",
710
+ "properties": {
711
+ "postId": {
712
+ "type": "string",
713
+ "description": "The ID of the post to reply to"
714
+ },
715
+ "text": {
716
+ "type": "string",
717
+ "description": "Reply text"
718
+ }
719
+ },
720
+ "required": [
721
+ "postId",
722
+ "text"
723
+ ]
724
+ }
725
+ },
726
+ {
727
+ "name": "follower_stats",
728
+ "description": "Get follower count and growth stats for a connected account",
729
+ "method": "GET",
730
+ "path": "/accounts/%7B%7BaccountId%7D%7D/followers",
731
+ "input_schema": {
732
+ "type": "object",
733
+ "properties": {
734
+ "accountId": {
735
+ "type": "string",
736
+ "description": "Account ID to get follower stats for"
737
+ }
738
+ },
739
+ "required": [
740
+ "accountId"
741
+ ]
742
+ }
743
+ },
744
+ {
745
+ "name": "list_queue_slots",
746
+ "description": "List queue schedules for a profile. Returns recurring time slots when queued posts will be auto-published.",
747
+ "method": "GET",
748
+ "path": "/queue/list-queue-slots",
749
+ "input_schema": {
750
+ "type": "object",
751
+ "properties": {
752
+ "profileId": {
753
+ "type": "string",
754
+ "description": "Profile ID to list queue slots for"
755
+ },
756
+ "all": {
757
+ "type": "boolean",
758
+ "description": "Set to true to get all queues (not just the default)"
759
+ },
760
+ "queueId": {
761
+ "type": "string",
762
+ "description": "Get a specific queue by ID"
763
+ }
764
+ },
765
+ "required": [
766
+ "profileId"
767
+ ]
768
+ }
769
+ },
770
+ {
771
+ "name": "create_queue_slot",
772
+ "description": "Create a new recurring queue schedule for a profile. The first queue created becomes the default. Posts created with queuedFromProfile will be auto-published at these times.",
773
+ "method": "POST",
774
+ "path": "/queue/create-queue-slot",
775
+ "input_schema": {
776
+ "type": "object",
777
+ "properties": {
778
+ "profileId": {
779
+ "type": "string",
780
+ "description": "Profile ID to create queue for"
781
+ },
782
+ "name": {
783
+ "type": "string",
784
+ "description": "Queue name (e.g., 'Morning Posts', 'Evening Schedule')"
785
+ },
786
+ "slots": {
787
+ "type": "array",
788
+ "description": "Array of time slot objects with day and time. Example: [{\"day\":\"monday\",\"time\":\"09:00\"},{\"day\":\"wednesday\",\"time\":\"14:00\"}]",
789
+ "items": {
790
+ "type": "object",
791
+ "properties": {
792
+ "day": {
793
+ "type": "string",
794
+ "enum": [
795
+ "monday",
796
+ "tuesday",
797
+ "wednesday",
798
+ "thursday",
799
+ "friday",
800
+ "saturday",
801
+ "sunday"
802
+ ]
803
+ },
804
+ "time": {
805
+ "type": "string",
806
+ "description": "Time in HH:MM format (24h)"
807
+ }
808
+ },
809
+ "required": [
810
+ "day",
811
+ "time"
812
+ ]
813
+ }
814
+ },
815
+ "timezone": {
816
+ "type": "string",
817
+ "description": "Timezone for the slots (e.g., 'America/New_York', 'Europe/Paris')"
818
+ }
819
+ },
820
+ "required": [
821
+ "profileId",
822
+ "slots"
823
+ ]
824
+ }
825
+ },
826
+ {
827
+ "name": "get_next_queue_slot",
828
+ "description": "Get the next available posting time for a profile's queue. Use this to preview when a queued post will be published.",
829
+ "method": "GET",
830
+ "path": "/queue/get-next-queue-slot",
831
+ "input_schema": {
832
+ "type": "object",
833
+ "properties": {
834
+ "profileId": {
835
+ "type": "string",
836
+ "description": "Profile ID to check next slot for"
837
+ },
838
+ "queueId": {
839
+ "type": "string",
840
+ "description": "Specific queue ID (optional, uses default queue if omitted)"
841
+ }
842
+ },
843
+ "required": [
844
+ "profileId"
845
+ ]
846
+ }
847
+ },
848
+ {
849
+ "name": "update_queue_slot",
850
+ "description": "Update an existing queue schedule or create a new one. Without queueId, creates/updates the default queue. With queueId, updates that specific queue.",
851
+ "method": "PATCH",
852
+ "path": "/queue/update-queue-slot",
853
+ "input_schema": {
854
+ "type": "object",
855
+ "properties": {
856
+ "profileId": {
857
+ "type": "string",
858
+ "description": "Profile ID the queue belongs to"
859
+ },
860
+ "queueId": {
861
+ "type": "string",
862
+ "description": "Queue ID to update (omit to update/create default queue)"
863
+ },
864
+ "name": {
865
+ "type": "string",
866
+ "description": "Updated queue name"
867
+ },
868
+ "slots": {
869
+ "type": "array",
870
+ "description": "Updated array of time slot objects",
871
+ "items": {
872
+ "type": "object",
873
+ "properties": {
874
+ "day": {
875
+ "type": "string",
876
+ "enum": [
877
+ "monday",
878
+ "tuesday",
879
+ "wednesday",
880
+ "thursday",
881
+ "friday",
882
+ "saturday",
883
+ "sunday"
884
+ ]
885
+ },
886
+ "time": {
887
+ "type": "string",
888
+ "description": "Time in HH:MM format (24h)"
889
+ }
890
+ },
891
+ "required": [
892
+ "day",
893
+ "time"
894
+ ]
895
+ }
896
+ },
897
+ "timezone": {
898
+ "type": "string",
899
+ "description": "Timezone for the slots"
900
+ },
901
+ "setAsDefault": {
902
+ "type": "boolean",
903
+ "description": "Set this queue as the profile's default queue"
904
+ }
905
+ },
906
+ "required": [
907
+ "profileId"
908
+ ]
909
+ }
910
+ },
911
+ {
912
+ "name": "delete_queue_slot",
913
+ "description": "Remove a queue from a profile. If deleting the default queue, another queue automatically becomes the default.",
914
+ "method": "DELETE",
915
+ "path": "/queue/%7B%7BqueueId%7D%7D",
916
+ "input_schema": {
917
+ "type": "object",
918
+ "properties": {
919
+ "profileId": {
920
+ "type": "string",
921
+ "description": "Profile ID the queue belongs to"
922
+ },
923
+ "queueId": {
924
+ "type": "string",
925
+ "description": "Queue ID to delete"
926
+ }
927
+ },
928
+ "required": [
929
+ "profileId",
930
+ "queueId"
931
+ ]
932
+ }
933
+ },
934
+ {
935
+ "name": "preview_queue",
936
+ "description": "Show upcoming N queue slot times as ISO datetime strings. Useful for displaying a calendar of upcoming scheduled posts.",
937
+ "method": "GET",
938
+ "path": "/queue/preview-queue",
939
+ "input_schema": {
940
+ "type": "object",
941
+ "properties": {
942
+ "profileId": {
943
+ "type": "string",
944
+ "description": "Profile ID to preview queue for"
945
+ },
946
+ "count": {
947
+ "type": "integer",
948
+ "description": "Number of upcoming slot times to return",
949
+ "default": 10
950
+ },
951
+ "queueId": {
952
+ "type": "string",
953
+ "description": "Specific queue ID (optional, uses default if omitted)"
954
+ }
955
+ },
956
+ "required": [
957
+ "profileId"
958
+ ]
959
+ }
960
+ },
961
+ {
962
+ "name": "validate_post",
963
+ "description": "Dry-run the full post validation pipeline without publishing. Catches issues like missing required media (Instagram/TikTok/YouTube), hashtag limit violations, invalid thread formatting, character limit violations, and Facebook Reel requirements. Also warns when content exceeds 90% of character limits.",
964
+ "method": "POST",
965
+ "path": "/validate/validate-post",
966
+ "input_schema": {
967
+ "type": "object",
968
+ "properties": {
969
+ "content": {
970
+ "type": "string",
971
+ "description": "Post text/content to validate"
972
+ },
973
+ "platforms": {
974
+ "type": "array",
975
+ "description": "Target platforms to validate against",
976
+ "items": {
977
+ "type": "object",
978
+ "properties": {
979
+ "platform": {
980
+ "type": "string",
981
+ "enum": [
982
+ "twitter",
983
+ "instagram",
984
+ "tiktok",
985
+ "linkedin",
986
+ "facebook",
987
+ "youtube",
988
+ "threads",
989
+ "reddit",
990
+ "pinterest",
991
+ "bluesky",
992
+ "telegram",
993
+ "google_business",
994
+ "snapchat"
995
+ ]
996
+ },
997
+ "accountId": {
998
+ "type": "string",
999
+ "description": "Account ID from late-list-accounts"
1000
+ }
1001
+ },
1002
+ "required": [
1003
+ "platform",
1004
+ "accountId"
1005
+ ]
1006
+ }
1007
+ },
1008
+ "mediaUrls": {
1009
+ "type": "array",
1010
+ "description": "Media URLs to validate",
1011
+ "items": {
1012
+ "type": "string"
1013
+ }
1014
+ },
1015
+ "customContent": {
1016
+ "type": "object",
1017
+ "description": "Per-platform text overrides to validate"
1018
+ },
1019
+ "platformOptions": {
1020
+ "type": "object",
1021
+ "description": "Platform-specific settings to validate"
1022
+ }
1023
+ },
1024
+ "required": [
1025
+ "platforms"
1026
+ ]
1027
+ }
1028
+ },
1029
+ {
1030
+ "name": "update_profile",
1031
+ "description": "Update an existing profile's name or description",
1032
+ "method": "PATCH",
1033
+ "path": "/profiles/%7B%7BprofileId%7D%7D",
1034
+ "input_schema": {
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "profileId": {
1038
+ "type": "string",
1039
+ "description": "Profile ID to update"
1040
+ },
1041
+ "name": {
1042
+ "type": "string",
1043
+ "description": "New profile name"
1044
+ },
1045
+ "description": {
1046
+ "type": "string",
1047
+ "description": "New profile description"
1048
+ }
1049
+ },
1050
+ "required": [
1051
+ "profileId"
1052
+ ]
1053
+ }
1054
+ }
1055
+ ]
1056
+ }