posterly-mcp-server 0.8.2 → 0.8.3

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.
package/README.md CHANGED
@@ -93,7 +93,7 @@ Add the same server definition to your Cursor MCP settings:
93
93
 
94
94
  ## Available tools
95
95
 
96
- `posterly-mcp-server@0.8.2` exposes 16 tools:
96
+ `posterly-mcp-server@0.8.3` exposes 17 tools:
97
97
 
98
98
  - `whoami`
99
99
  - `list_accounts`
@@ -104,6 +104,7 @@ Add the same server definition to your Cursor MCP settings:
104
104
  - `list_posts`
105
105
  - `get_post`
106
106
  - `create_post` (supports `thread_posts: string[]` for X / Threads reply chains, plus `platform_settings` for platform-specific composer controls)
107
+ - `create_posts_batch` (create up to 25 confirmed posts in one API request)
107
108
  - `update_post` (also accepts `platform_settings`)
108
109
  - `delete_post`
109
110
  - `upload_media`
@@ -150,11 +151,11 @@ much more reliable than forcing the agent to guess from raw account handles alon
150
151
  This package uses the Posterly API/MCP add-on:
151
152
 
152
153
  - `$3/month` add-on
153
- - `30 requests/hour` per API key
154
+ - `100 create-post requests/hour` per API key, with separate media/read limits
154
155
  - user-created API keys per plan: Starter 1, Pro 2, Power User 3, Agency 4
155
156
  - works across all 11 supported platforms
156
157
 
157
- Each API call counts as one request, so you can still schedule multiple posts in a single request to maximize throughput.
158
+ Each API call counts as one request, so use `create_posts_batch` when you need to schedule multiple posts in one confirmed operation.
158
159
 
159
160
  Details: [poster.ly/dashboard/api](https://www.poster.ly/dashboard/api)
160
161
 
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { getBrandTool } from './tools/get-brand.js';
8
8
  import { listBrandAccountsTool } from './tools/list-brand-accounts.js';
9
9
  import { getBrandProfileTool } from './tools/get-brand-profile.js';
10
10
  import { createPostTool } from './tools/create-post.js';
11
+ import { createPostsBatchTool } from './tools/create-posts-batch.js';
11
12
  import { findSlotTool } from './tools/find-slot.js';
12
13
  import { listPostsTool } from './tools/list-posts.js';
13
14
  import { uploadMediaTool } from './tools/upload-media.js';
@@ -94,6 +95,15 @@ server.tool(createPostTool.name, createPostTool.description, createPostTool.inpu
94
95
  return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
95
96
  }
96
97
  });
98
+ server.tool(createPostsBatchTool.name, createPostsBatchTool.description, createPostsBatchTool.inputSchema.shape, async (input) => {
99
+ try {
100
+ const text = await createPostsBatchTool.execute(client, input);
101
+ return { content: [{ type: 'text', text }] };
102
+ }
103
+ catch (err) {
104
+ return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
105
+ }
106
+ });
97
107
  server.tool(findSlotTool.name, findSlotTool.description, findSlotTool.inputSchema.shape, async (input) => {
98
108
  try {
99
109
  const text = await findSlotTool.execute(client, input);
@@ -79,6 +79,47 @@ export interface InstagramPostSettings {
79
79
  reel_thumb_offset?: number;
80
80
  }
81
81
  export type PlatformPostSettings = Record<string, unknown>;
82
+ export type CreatePostPayload = {
83
+ account_id?: string;
84
+ username?: string;
85
+ platform?: string;
86
+ caption: string;
87
+ scheduled_at?: string;
88
+ post_type?: string;
89
+ media_url?: string;
90
+ media_urls?: string[];
91
+ metadata?: Record<string, unknown>;
92
+ settings?: PlatformPostSettings;
93
+ reel_cover_url?: string;
94
+ reel_cover_method?: string;
95
+ reel_thumb_offset?: number;
96
+ workspace_id?: string;
97
+ };
98
+ export type CreatePostResponse = {
99
+ post: Post;
100
+ workspace: {
101
+ id: string;
102
+ name: string;
103
+ is_personal: boolean;
104
+ resolved_from: 'explicit' | 'account' | 'personal';
105
+ };
106
+ };
107
+ export type BatchCreatePostsResponse = {
108
+ posts: Array<CreatePostResponse & {
109
+ index: number;
110
+ replayed: boolean;
111
+ }>;
112
+ errors: Array<{
113
+ index: number;
114
+ status: number;
115
+ error: string;
116
+ validation_errors?: unknown;
117
+ }>;
118
+ total: number;
119
+ created: number;
120
+ replayed: number;
121
+ failed: number;
122
+ };
82
123
  export interface Slot {
83
124
  time: string;
84
125
  local_time: string;
@@ -221,30 +262,10 @@ export declare class PosterlyClient {
221
262
  posts: Post[];
222
263
  total: number;
223
264
  }>;
224
- createPost(data: {
225
- account_id?: string;
226
- username?: string;
227
- platform?: string;
228
- caption: string;
229
- scheduled_at?: string;
230
- post_type?: string;
231
- media_url?: string;
232
- media_urls?: string[];
233
- metadata?: Record<string, unknown>;
234
- settings?: PlatformPostSettings;
235
- reel_cover_url?: string;
236
- reel_cover_method?: string;
237
- reel_thumb_offset?: number;
238
- workspace_id?: string;
239
- }): Promise<{
240
- post: Post;
241
- workspace: {
242
- id: string;
243
- name: string;
244
- is_personal: boolean;
245
- resolved_from: 'explicit' | 'account' | 'personal';
246
- };
247
- }>;
265
+ createPost(data: CreatePostPayload): Promise<CreatePostResponse>;
266
+ createPostsBatch(data: {
267
+ posts: CreatePostPayload[];
268
+ }): Promise<BatchCreatePostsResponse>;
248
269
  getPost(id: number): Promise<{
249
270
  post: Post;
250
271
  }>;
@@ -79,6 +79,9 @@ export class PosterlyClient {
79
79
  async createPost(data) {
80
80
  return this.request('POST', '/posts', data);
81
81
  }
82
+ async createPostsBatch(data) {
83
+ return this.request('POST', '/posts/batch', data);
84
+ }
82
85
  async getPost(id) {
83
86
  return this.request('GET', `/posts/${id}`);
84
87
  }
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import type { PosterlyClient } from '../lib/api-client.js';
3
- declare const instagramSettingsSchema: z.ZodObject<{
3
+ export declare const instagramSettingsSchema: z.ZodObject<{
4
4
  __type: z.ZodOptional<z.ZodEnum<["instagram", "instagram-standalone"]>>;
5
5
  post_type: z.ZodOptional<z.ZodEnum<["post", "feed", "story", "reel", "carousel"]>>;
6
6
  is_trial_reel: z.ZodOptional<z.ZodBoolean>;
@@ -74,7 +74,7 @@ declare const instagramSettingsSchema: z.ZodObject<{
74
74
  reel_cover_url?: string | undefined;
75
75
  reel_thumb_offset?: number | undefined;
76
76
  }>;
77
- declare const platformSettingsSchema: z.ZodObject<{
77
+ export declare const platformSettingsSchema: z.ZodObject<{
78
78
  __type: z.ZodOptional<z.ZodString>;
79
79
  post_type: z.ZodOptional<z.ZodString>;
80
80
  content_type: z.ZodOptional<z.ZodString>;
@@ -219,6 +219,399 @@ declare const platformSettingsSchema: z.ZodObject<{
219
219
  cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
220
220
  langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
221
221
  }, z.ZodTypeAny, "passthrough">>;
222
+ export declare const createPostInputSchema: z.ZodObject<{
223
+ account_id: z.ZodOptional<z.ZodString>;
224
+ username: z.ZodOptional<z.ZodString>;
225
+ platform: z.ZodOptional<z.ZodString>;
226
+ caption: z.ZodOptional<z.ZodString>;
227
+ scheduled_at: z.ZodOptional<z.ZodString>;
228
+ media_url: z.ZodOptional<z.ZodString>;
229
+ media_urls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
230
+ post_type: z.ZodOptional<z.ZodString>;
231
+ thread_posts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
232
+ instagram_settings: z.ZodOptional<z.ZodObject<{
233
+ __type: z.ZodOptional<z.ZodEnum<["instagram", "instagram-standalone"]>>;
234
+ post_type: z.ZodOptional<z.ZodEnum<["post", "feed", "story", "reel", "carousel"]>>;
235
+ is_trial_reel: z.ZodOptional<z.ZodBoolean>;
236
+ graduation_strategy: z.ZodOptional<z.ZodEnum<["MANUAL", "SS_PERFORMANCE"]>>;
237
+ collaborators: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
238
+ label: z.ZodOptional<z.ZodString>;
239
+ username: z.ZodOptional<z.ZodString>;
240
+ handle: z.ZodOptional<z.ZodString>;
241
+ }, "strip", z.ZodTypeAny, {
242
+ label?: string | undefined;
243
+ username?: string | undefined;
244
+ handle?: string | undefined;
245
+ }, {
246
+ label?: string | undefined;
247
+ username?: string | undefined;
248
+ handle?: string | undefined;
249
+ }>]>, "many">>;
250
+ user_tags: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
251
+ username: z.ZodOptional<z.ZodString>;
252
+ label: z.ZodOptional<z.ZodString>;
253
+ handle: z.ZodOptional<z.ZodString>;
254
+ }, "strip", z.ZodTypeAny, {
255
+ label?: string | undefined;
256
+ username?: string | undefined;
257
+ handle?: string | undefined;
258
+ }, {
259
+ label?: string | undefined;
260
+ username?: string | undefined;
261
+ handle?: string | undefined;
262
+ }>]>, "many">>;
263
+ first_comment: z.ZodOptional<z.ZodString>;
264
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
265
+ reel_cover_url: z.ZodOptional<z.ZodString>;
266
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
267
+ }, "strip", z.ZodTypeAny, {
268
+ __type?: "instagram" | "instagram-standalone" | undefined;
269
+ post_type?: "post" | "feed" | "story" | "reel" | "carousel" | undefined;
270
+ is_trial_reel?: boolean | undefined;
271
+ graduation_strategy?: "MANUAL" | "SS_PERFORMANCE" | undefined;
272
+ collaborators?: (string | {
273
+ label?: string | undefined;
274
+ username?: string | undefined;
275
+ handle?: string | undefined;
276
+ })[] | undefined;
277
+ user_tags?: (string | {
278
+ label?: string | undefined;
279
+ username?: string | undefined;
280
+ handle?: string | undefined;
281
+ })[] | undefined;
282
+ first_comment?: string | undefined;
283
+ media_alt_texts?: Record<string, string> | undefined;
284
+ reel_cover_url?: string | undefined;
285
+ reel_thumb_offset?: number | undefined;
286
+ }, {
287
+ __type?: "instagram" | "instagram-standalone" | undefined;
288
+ post_type?: "post" | "feed" | "story" | "reel" | "carousel" | undefined;
289
+ is_trial_reel?: boolean | undefined;
290
+ graduation_strategy?: "MANUAL" | "SS_PERFORMANCE" | undefined;
291
+ collaborators?: (string | {
292
+ label?: string | undefined;
293
+ username?: string | undefined;
294
+ handle?: string | undefined;
295
+ })[] | undefined;
296
+ user_tags?: (string | {
297
+ label?: string | undefined;
298
+ username?: string | undefined;
299
+ handle?: string | undefined;
300
+ })[] | undefined;
301
+ first_comment?: string | undefined;
302
+ media_alt_texts?: Record<string, string> | undefined;
303
+ reel_cover_url?: string | undefined;
304
+ reel_thumb_offset?: number | undefined;
305
+ }>>;
306
+ platform_settings: z.ZodOptional<z.ZodObject<{
307
+ __type: z.ZodOptional<z.ZodString>;
308
+ post_type: z.ZodOptional<z.ZodString>;
309
+ content_type: z.ZodOptional<z.ZodString>;
310
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
311
+ reel_cover_url: z.ZodOptional<z.ZodString>;
312
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
313
+ reply_settings: z.ZodOptional<z.ZodEnum<["everyone", "following", "mentionedUsers"]>>;
314
+ poll: z.ZodOptional<z.ZodObject<{
315
+ options: z.ZodArray<z.ZodString, "many">;
316
+ duration_minutes: z.ZodOptional<z.ZodNumber>;
317
+ }, "strip", z.ZodTypeAny, {
318
+ options: string[];
319
+ duration_minutes?: number | undefined;
320
+ }, {
321
+ options: string[];
322
+ duration_minutes?: number | undefined;
323
+ }>>;
324
+ reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only"]>>;
325
+ text_attachment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
326
+ text_format_preset_id: z.ZodOptional<z.ZodString>;
327
+ document_title: z.ZodOptional<z.ZodString>;
328
+ document_filename: z.ZodOptional<z.ZodString>;
329
+ mentions: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
330
+ thumbnail_url: z.ZodOptional<z.ZodString>;
331
+ thumbnail_method: z.ZodOptional<z.ZodString>;
332
+ privacy_level: z.ZodOptional<z.ZodString>;
333
+ allow_comment: z.ZodOptional<z.ZodBoolean>;
334
+ allow_duet: z.ZodOptional<z.ZodBoolean>;
335
+ allow_stitch: z.ZodOptional<z.ZodBoolean>;
336
+ title: z.ZodOptional<z.ZodString>;
337
+ is_commercial_content: z.ZodOptional<z.ZodBoolean>;
338
+ is_your_brand: z.ZodOptional<z.ZodBoolean>;
339
+ is_branded_content: z.ZodOptional<z.ZodBoolean>;
340
+ privacy_status: z.ZodOptional<z.ZodEnum<["public", "unlisted", "private"]>>;
341
+ made_for_kids: z.ZodOptional<z.ZodBoolean>;
342
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
343
+ category_id: z.ZodOptional<z.ZodString>;
344
+ playlist_id: z.ZodOptional<z.ZodString>;
345
+ board_id: z.ZodOptional<z.ZodString>;
346
+ link: z.ZodOptional<z.ZodString>;
347
+ cover_image_url: z.ZodOptional<z.ZodString>;
348
+ video_cover_url: z.ZodOptional<z.ZodString>;
349
+ cover_image_method: z.ZodOptional<z.ZodEnum<["upload", "frame", "api"]>>;
350
+ event: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
351
+ offer: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
352
+ cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
353
+ langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
354
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
355
+ __type: z.ZodOptional<z.ZodString>;
356
+ post_type: z.ZodOptional<z.ZodString>;
357
+ content_type: z.ZodOptional<z.ZodString>;
358
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
359
+ reel_cover_url: z.ZodOptional<z.ZodString>;
360
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
361
+ reply_settings: z.ZodOptional<z.ZodEnum<["everyone", "following", "mentionedUsers"]>>;
362
+ poll: z.ZodOptional<z.ZodObject<{
363
+ options: z.ZodArray<z.ZodString, "many">;
364
+ duration_minutes: z.ZodOptional<z.ZodNumber>;
365
+ }, "strip", z.ZodTypeAny, {
366
+ options: string[];
367
+ duration_minutes?: number | undefined;
368
+ }, {
369
+ options: string[];
370
+ duration_minutes?: number | undefined;
371
+ }>>;
372
+ reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only"]>>;
373
+ text_attachment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
374
+ text_format_preset_id: z.ZodOptional<z.ZodString>;
375
+ document_title: z.ZodOptional<z.ZodString>;
376
+ document_filename: z.ZodOptional<z.ZodString>;
377
+ mentions: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
378
+ thumbnail_url: z.ZodOptional<z.ZodString>;
379
+ thumbnail_method: z.ZodOptional<z.ZodString>;
380
+ privacy_level: z.ZodOptional<z.ZodString>;
381
+ allow_comment: z.ZodOptional<z.ZodBoolean>;
382
+ allow_duet: z.ZodOptional<z.ZodBoolean>;
383
+ allow_stitch: z.ZodOptional<z.ZodBoolean>;
384
+ title: z.ZodOptional<z.ZodString>;
385
+ is_commercial_content: z.ZodOptional<z.ZodBoolean>;
386
+ is_your_brand: z.ZodOptional<z.ZodBoolean>;
387
+ is_branded_content: z.ZodOptional<z.ZodBoolean>;
388
+ privacy_status: z.ZodOptional<z.ZodEnum<["public", "unlisted", "private"]>>;
389
+ made_for_kids: z.ZodOptional<z.ZodBoolean>;
390
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
391
+ category_id: z.ZodOptional<z.ZodString>;
392
+ playlist_id: z.ZodOptional<z.ZodString>;
393
+ board_id: z.ZodOptional<z.ZodString>;
394
+ link: z.ZodOptional<z.ZodString>;
395
+ cover_image_url: z.ZodOptional<z.ZodString>;
396
+ video_cover_url: z.ZodOptional<z.ZodString>;
397
+ cover_image_method: z.ZodOptional<z.ZodEnum<["upload", "frame", "api"]>>;
398
+ event: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
399
+ offer: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
400
+ cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
401
+ langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
402
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
403
+ __type: z.ZodOptional<z.ZodString>;
404
+ post_type: z.ZodOptional<z.ZodString>;
405
+ content_type: z.ZodOptional<z.ZodString>;
406
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
407
+ reel_cover_url: z.ZodOptional<z.ZodString>;
408
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
409
+ reply_settings: z.ZodOptional<z.ZodEnum<["everyone", "following", "mentionedUsers"]>>;
410
+ poll: z.ZodOptional<z.ZodObject<{
411
+ options: z.ZodArray<z.ZodString, "many">;
412
+ duration_minutes: z.ZodOptional<z.ZodNumber>;
413
+ }, "strip", z.ZodTypeAny, {
414
+ options: string[];
415
+ duration_minutes?: number | undefined;
416
+ }, {
417
+ options: string[];
418
+ duration_minutes?: number | undefined;
419
+ }>>;
420
+ reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only"]>>;
421
+ text_attachment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
422
+ text_format_preset_id: z.ZodOptional<z.ZodString>;
423
+ document_title: z.ZodOptional<z.ZodString>;
424
+ document_filename: z.ZodOptional<z.ZodString>;
425
+ mentions: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
426
+ thumbnail_url: z.ZodOptional<z.ZodString>;
427
+ thumbnail_method: z.ZodOptional<z.ZodString>;
428
+ privacy_level: z.ZodOptional<z.ZodString>;
429
+ allow_comment: z.ZodOptional<z.ZodBoolean>;
430
+ allow_duet: z.ZodOptional<z.ZodBoolean>;
431
+ allow_stitch: z.ZodOptional<z.ZodBoolean>;
432
+ title: z.ZodOptional<z.ZodString>;
433
+ is_commercial_content: z.ZodOptional<z.ZodBoolean>;
434
+ is_your_brand: z.ZodOptional<z.ZodBoolean>;
435
+ is_branded_content: z.ZodOptional<z.ZodBoolean>;
436
+ privacy_status: z.ZodOptional<z.ZodEnum<["public", "unlisted", "private"]>>;
437
+ made_for_kids: z.ZodOptional<z.ZodBoolean>;
438
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
439
+ category_id: z.ZodOptional<z.ZodString>;
440
+ playlist_id: z.ZodOptional<z.ZodString>;
441
+ board_id: z.ZodOptional<z.ZodString>;
442
+ link: z.ZodOptional<z.ZodString>;
443
+ cover_image_url: z.ZodOptional<z.ZodString>;
444
+ video_cover_url: z.ZodOptional<z.ZodString>;
445
+ cover_image_method: z.ZodOptional<z.ZodEnum<["upload", "frame", "api"]>>;
446
+ event: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
447
+ offer: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
448
+ cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
449
+ langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
450
+ }, z.ZodTypeAny, "passthrough">>>;
451
+ workspace_id: z.ZodOptional<z.ZodString>;
452
+ }, "strip", z.ZodTypeAny, {
453
+ workspace_id?: string | undefined;
454
+ platform?: string | undefined;
455
+ account_id?: string | undefined;
456
+ post_type?: string | undefined;
457
+ username?: string | undefined;
458
+ caption?: string | undefined;
459
+ scheduled_at?: string | undefined;
460
+ media_url?: string | undefined;
461
+ media_urls?: string[] | undefined;
462
+ thread_posts?: string[] | undefined;
463
+ instagram_settings?: {
464
+ __type?: "instagram" | "instagram-standalone" | undefined;
465
+ post_type?: "post" | "feed" | "story" | "reel" | "carousel" | undefined;
466
+ is_trial_reel?: boolean | undefined;
467
+ graduation_strategy?: "MANUAL" | "SS_PERFORMANCE" | undefined;
468
+ collaborators?: (string | {
469
+ label?: string | undefined;
470
+ username?: string | undefined;
471
+ handle?: string | undefined;
472
+ })[] | undefined;
473
+ user_tags?: (string | {
474
+ label?: string | undefined;
475
+ username?: string | undefined;
476
+ handle?: string | undefined;
477
+ })[] | undefined;
478
+ first_comment?: string | undefined;
479
+ media_alt_texts?: Record<string, string> | undefined;
480
+ reel_cover_url?: string | undefined;
481
+ reel_thumb_offset?: number | undefined;
482
+ } | undefined;
483
+ platform_settings?: z.objectOutputType<{
484
+ __type: z.ZodOptional<z.ZodString>;
485
+ post_type: z.ZodOptional<z.ZodString>;
486
+ content_type: z.ZodOptional<z.ZodString>;
487
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
488
+ reel_cover_url: z.ZodOptional<z.ZodString>;
489
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
490
+ reply_settings: z.ZodOptional<z.ZodEnum<["everyone", "following", "mentionedUsers"]>>;
491
+ poll: z.ZodOptional<z.ZodObject<{
492
+ options: z.ZodArray<z.ZodString, "many">;
493
+ duration_minutes: z.ZodOptional<z.ZodNumber>;
494
+ }, "strip", z.ZodTypeAny, {
495
+ options: string[];
496
+ duration_minutes?: number | undefined;
497
+ }, {
498
+ options: string[];
499
+ duration_minutes?: number | undefined;
500
+ }>>;
501
+ reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only"]>>;
502
+ text_attachment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
503
+ text_format_preset_id: z.ZodOptional<z.ZodString>;
504
+ document_title: z.ZodOptional<z.ZodString>;
505
+ document_filename: z.ZodOptional<z.ZodString>;
506
+ mentions: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
507
+ thumbnail_url: z.ZodOptional<z.ZodString>;
508
+ thumbnail_method: z.ZodOptional<z.ZodString>;
509
+ privacy_level: z.ZodOptional<z.ZodString>;
510
+ allow_comment: z.ZodOptional<z.ZodBoolean>;
511
+ allow_duet: z.ZodOptional<z.ZodBoolean>;
512
+ allow_stitch: z.ZodOptional<z.ZodBoolean>;
513
+ title: z.ZodOptional<z.ZodString>;
514
+ is_commercial_content: z.ZodOptional<z.ZodBoolean>;
515
+ is_your_brand: z.ZodOptional<z.ZodBoolean>;
516
+ is_branded_content: z.ZodOptional<z.ZodBoolean>;
517
+ privacy_status: z.ZodOptional<z.ZodEnum<["public", "unlisted", "private"]>>;
518
+ made_for_kids: z.ZodOptional<z.ZodBoolean>;
519
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
520
+ category_id: z.ZodOptional<z.ZodString>;
521
+ playlist_id: z.ZodOptional<z.ZodString>;
522
+ board_id: z.ZodOptional<z.ZodString>;
523
+ link: z.ZodOptional<z.ZodString>;
524
+ cover_image_url: z.ZodOptional<z.ZodString>;
525
+ video_cover_url: z.ZodOptional<z.ZodString>;
526
+ cover_image_method: z.ZodOptional<z.ZodEnum<["upload", "frame", "api"]>>;
527
+ event: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
528
+ offer: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
529
+ cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
530
+ langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
531
+ }, z.ZodTypeAny, "passthrough"> | undefined;
532
+ }, {
533
+ workspace_id?: string | undefined;
534
+ platform?: string | undefined;
535
+ account_id?: string | undefined;
536
+ post_type?: string | undefined;
537
+ username?: string | undefined;
538
+ caption?: string | undefined;
539
+ scheduled_at?: string | undefined;
540
+ media_url?: string | undefined;
541
+ media_urls?: string[] | undefined;
542
+ thread_posts?: string[] | undefined;
543
+ instagram_settings?: {
544
+ __type?: "instagram" | "instagram-standalone" | undefined;
545
+ post_type?: "post" | "feed" | "story" | "reel" | "carousel" | undefined;
546
+ is_trial_reel?: boolean | undefined;
547
+ graduation_strategy?: "MANUAL" | "SS_PERFORMANCE" | undefined;
548
+ collaborators?: (string | {
549
+ label?: string | undefined;
550
+ username?: string | undefined;
551
+ handle?: string | undefined;
552
+ })[] | undefined;
553
+ user_tags?: (string | {
554
+ label?: string | undefined;
555
+ username?: string | undefined;
556
+ handle?: string | undefined;
557
+ })[] | undefined;
558
+ first_comment?: string | undefined;
559
+ media_alt_texts?: Record<string, string> | undefined;
560
+ reel_cover_url?: string | undefined;
561
+ reel_thumb_offset?: number | undefined;
562
+ } | undefined;
563
+ platform_settings?: z.objectInputType<{
564
+ __type: z.ZodOptional<z.ZodString>;
565
+ post_type: z.ZodOptional<z.ZodString>;
566
+ content_type: z.ZodOptional<z.ZodString>;
567
+ media_alt_texts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
568
+ reel_cover_url: z.ZodOptional<z.ZodString>;
569
+ reel_thumb_offset: z.ZodOptional<z.ZodNumber>;
570
+ reply_settings: z.ZodOptional<z.ZodEnum<["everyone", "following", "mentionedUsers"]>>;
571
+ poll: z.ZodOptional<z.ZodObject<{
572
+ options: z.ZodArray<z.ZodString, "many">;
573
+ duration_minutes: z.ZodOptional<z.ZodNumber>;
574
+ }, "strip", z.ZodTypeAny, {
575
+ options: string[];
576
+ duration_minutes?: number | undefined;
577
+ }, {
578
+ options: string[];
579
+ duration_minutes?: number | undefined;
580
+ }>>;
581
+ reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only"]>>;
582
+ text_attachment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
583
+ text_format_preset_id: z.ZodOptional<z.ZodString>;
584
+ document_title: z.ZodOptional<z.ZodString>;
585
+ document_filename: z.ZodOptional<z.ZodString>;
586
+ mentions: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
587
+ thumbnail_url: z.ZodOptional<z.ZodString>;
588
+ thumbnail_method: z.ZodOptional<z.ZodString>;
589
+ privacy_level: z.ZodOptional<z.ZodString>;
590
+ allow_comment: z.ZodOptional<z.ZodBoolean>;
591
+ allow_duet: z.ZodOptional<z.ZodBoolean>;
592
+ allow_stitch: z.ZodOptional<z.ZodBoolean>;
593
+ title: z.ZodOptional<z.ZodString>;
594
+ is_commercial_content: z.ZodOptional<z.ZodBoolean>;
595
+ is_your_brand: z.ZodOptional<z.ZodBoolean>;
596
+ is_branded_content: z.ZodOptional<z.ZodBoolean>;
597
+ privacy_status: z.ZodOptional<z.ZodEnum<["public", "unlisted", "private"]>>;
598
+ made_for_kids: z.ZodOptional<z.ZodBoolean>;
599
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
600
+ category_id: z.ZodOptional<z.ZodString>;
601
+ playlist_id: z.ZodOptional<z.ZodString>;
602
+ board_id: z.ZodOptional<z.ZodString>;
603
+ link: z.ZodOptional<z.ZodString>;
604
+ cover_image_url: z.ZodOptional<z.ZodString>;
605
+ video_cover_url: z.ZodOptional<z.ZodString>;
606
+ cover_image_method: z.ZodOptional<z.ZodEnum<["upload", "frame", "api"]>>;
607
+ event: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
608
+ offer: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
609
+ cta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
610
+ langs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
611
+ }, z.ZodTypeAny, "passthrough"> | undefined;
612
+ }>;
613
+ export type CreatePostInput = z.infer<typeof createPostInputSchema>;
614
+ export declare function buildCreatePostPayload(input: CreatePostInput): Parameters<PosterlyClient['createPost']>[0];
222
615
  export declare const createPostTool: {
223
616
  name: string;
224
617
  description: string;
@@ -628,4 +1021,3 @@ export declare const createPostTool: {
628
1021
  workspace_id?: string;
629
1022
  }): Promise<string>;
630
1023
  };
631
- export {};