posterly-mcp-server 0.26.0 → 0.27.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.
package/README.md CHANGED
@@ -16,6 +16,19 @@ This package gives Claude Desktop, Cursor, Windsurf, Cline, and other local MCP
16
16
 
17
17
  Posterly also exposes the same authenticated toolset over HTTP at [poster.ly/mcp](https://www.poster.ly/mcp), but this npm package is the local `stdio` connection for desktop AI clients.
18
18
 
19
+ ## Public discovery
20
+
21
+ - Hosted Streamable HTTP endpoint: `https://www.poster.ly/api/mcp`
22
+ - Server card: `https://www.poster.ly/.well-known/mcp/server-card.json`
23
+ - OpenAPI: `https://www.poster.ly/api/openapi`
24
+ - Agent skills: `https://www.poster.ly/.well-known/agent-skills/index.json`
25
+ - Agent reference: `https://www.poster.ly/llms-full.txt`
26
+ - Signup and API-key acquisition: `https://www.poster.ly/agents/signup`
27
+ - Source: `https://github.com/awpthorp/posterly/tree/main/mcp-server`
28
+
29
+ The official MCP Registry metadata is in `server.json`. Its canonical registry
30
+ name is `io.github.awpthorp/posterly`, matching this package's `mcpName`.
31
+
19
32
  ## Requirements
20
33
 
21
34
  - Node.js `20+`
@@ -108,7 +121,7 @@ Add the same server definition to your Cursor MCP settings:
108
121
 
109
122
  ## Available tools
110
123
 
111
- `posterly-mcp-server@0.26.0` exposes 73 tools.
124
+ `posterly-mcp-server@0.27.0` exposes 75 tools.
112
125
 
113
126
  Public setup tools work before `POSTERLY_API_KEY` exists:
114
127
 
@@ -149,6 +162,8 @@ Authenticated tools require `POSTERLY_API_KEY`:
149
162
  - `get_post_missing`
150
163
  - `ask_support` (authenticated docs-backed support with read-only account/post diagnostics; human tickets require explicit confirmation)
151
164
  - `create_post` (supports `thread_posts: string[]` for X / Threads reply chains, plus `platform_settings` for platform-specific composer controls)
165
+ - `validate_post` (checks and normalizes a post without creating it; call before requesting confirmation for `create_post`)
166
+ - `submit_agent_feedback` (writes bounded private operational telemetry after a real workflow outcome; never include secrets, prompts, captions, media URLs, or personal data)
152
167
  - `create_posts_batch` (create up to 25 confirmed posts in one API request)
153
168
  - `update_post` (also accepts `platform_settings`)
154
169
  - `update_post_status` (pause, resume, schedule, or draft a post after confirmation)
@@ -242,7 +257,7 @@ This package uses the Posterly API/MCP add-on:
242
257
  - `$3/month` add-on
243
258
  - `100 create-post requests/hour` per API key, with separate media/read limits
244
259
  - user-created API keys per plan: Starter 1, Pro 2, Power 3, Agency 4
245
- - works across all 17 supported platforms
260
+ - works across all 18 supported platforms: Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, and Lemmy
246
261
 
247
262
  Each API call counts as one request, so use `create_posts_batch` when you need to schedule multiple posts in one confirmed operation.
248
263
 
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ import { getPostInsightsTool } from './tools/get-post-insights.js';
19
19
  import { listPostSuggestionsTool } from './tools/list-post-suggestions.js';
20
20
  import { dismissSuggestionTool } from './tools/dismiss-suggestion.js';
21
21
  import { createPostTool } from './tools/create-post.js';
22
+ import { validatePostTool } from './tools/validate-post.js';
23
+ import { submitAgentFeedbackTool } from './tools/submit-agent-feedback.js';
22
24
  import { createPostsBatchTool } from './tools/create-posts-batch.js';
23
25
  import { findSlotTool } from './tools/find-slot.js';
24
26
  import { listPostsTool } from './tools/list-posts.js';
@@ -379,6 +381,24 @@ server.tool(dismissSuggestionTool.name, dismissSuggestionTool.description, dismi
379
381
  return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
380
382
  }
381
383
  });
384
+ server.tool(submitAgentFeedbackTool.name, submitAgentFeedbackTool.description, submitAgentFeedbackTool.inputSchema.shape, async (input) => {
385
+ try {
386
+ const text = await submitAgentFeedbackTool.execute(client, input);
387
+ return { content: [{ type: 'text', text }] };
388
+ }
389
+ catch (err) {
390
+ return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
391
+ }
392
+ });
393
+ server.tool(validatePostTool.name, validatePostTool.description, validatePostTool.inputSchema.shape, async (input) => {
394
+ try {
395
+ const text = await validatePostTool.execute(client, input);
396
+ return { content: [{ type: 'text', text }] };
397
+ }
398
+ catch (err) {
399
+ return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
400
+ }
401
+ });
382
402
  server.tool(createPostTool.name, createPostTool.description, createPostTool.inputSchema.shape, async (input) => {
383
403
  try {
384
404
  const text = await createPostTool.execute(client, input);
@@ -182,6 +182,43 @@ export type CreatePostResponse = {
182
182
  resolved_from: 'explicit' | 'account' | 'personal';
183
183
  };
184
184
  };
185
+ export type ValidatePostResponse = {
186
+ dry_run: true;
187
+ valid: true;
188
+ normalized: {
189
+ account_id: number;
190
+ platform: string;
191
+ post_type: string;
192
+ scheduled_at: string;
193
+ workspace_id: string | null;
194
+ };
195
+ warnings: Array<{
196
+ code: string;
197
+ message: string;
198
+ }>;
199
+ would_create: {
200
+ status: string;
201
+ };
202
+ };
203
+ export type AgentFeedbackPayload = {
204
+ source: 'mcp' | 'cli' | 'rest' | 'skill';
205
+ tool: string;
206
+ outcome: 'success' | 'error' | 'abandoned';
207
+ error_code?: string;
208
+ client?: string;
209
+ comment?: string;
210
+ context?: {
211
+ request_id?: string;
212
+ http_status?: number;
213
+ latency_ms?: number;
214
+ attempt?: number;
215
+ };
216
+ };
217
+ export type AgentFeedbackResponse = {
218
+ accepted: true;
219
+ feedback_id: string;
220
+ request_id: string;
221
+ };
185
222
  export type BatchCreatePostsResponse = {
186
223
  posts: Array<CreatePostResponse & {
187
224
  index: number;
@@ -846,6 +883,8 @@ export declare class PosterlyClient {
846
883
  total: number;
847
884
  }>;
848
885
  createPost(data: CreatePostPayload): Promise<CreatePostResponse>;
886
+ validatePost(data: CreatePostPayload): Promise<ValidatePostResponse>;
887
+ submitAgentFeedback(data: AgentFeedbackPayload): Promise<AgentFeedbackResponse>;
849
888
  createPostsBatch(data: {
850
889
  posts: CreatePostPayload[];
851
890
  }): Promise<BatchCreatePostsResponse>;
@@ -250,6 +250,12 @@ export class PosterlyClient {
250
250
  async createPost(data) {
251
251
  return this.request('POST', '/posts', data);
252
252
  }
253
+ async validatePost(data) {
254
+ return this.request('POST', '/posts', { ...data, dry_run: true });
255
+ }
256
+ async submitAgentFeedback(data) {
257
+ return this.request('POST', '/agent-feedback', data);
258
+ }
253
259
  async createPostsBatch(data) {
254
260
  return this.request('POST', '/posts/batch', data);
255
261
  }
@@ -1 +1 @@
1
- export declare const POSTERLY_MCP_VERSION = "0.26.0";
1
+ export declare const POSTERLY_MCP_VERSION = "0.27.0";
@@ -5,4 +5,4 @@
5
5
  // tool set (minus the intentional pre-auth signup tools that only this stdio
6
6
  // package exposes). `npm run check:mcp-parity` enforces both the version match
7
7
  // and the tool-list match, and runs in the pre-commit hook.
8
- export const POSTERLY_MCP_VERSION = '0.26.0';
8
+ export const POSTERLY_MCP_VERSION = '0.27.0';
@@ -90,15 +90,15 @@ export declare const platformSettingsSchema: z.ZodObject<{
90
90
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
91
91
  }, "strip", z.ZodTypeAny, {
92
92
  options: string[];
93
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
93
94
  duration_minutes?: number | undefined;
94
95
  question?: string | undefined;
95
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
96
96
  allows_multiple_answers?: boolean | undefined;
97
97
  }, {
98
98
  options: string[];
99
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
99
100
  duration_minutes?: number | undefined;
100
101
  question?: string | undefined;
101
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
102
102
  allows_multiple_answers?: boolean | undefined;
103
103
  }>>;
104
104
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -167,15 +167,15 @@ export declare const platformSettingsSchema: z.ZodObject<{
167
167
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
168
168
  }, "strip", z.ZodTypeAny, {
169
169
  options: string[];
170
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
170
171
  duration_minutes?: number | undefined;
171
172
  question?: string | undefined;
172
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
173
173
  allows_multiple_answers?: boolean | undefined;
174
174
  }, {
175
175
  options: string[];
176
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
176
177
  duration_minutes?: number | undefined;
177
178
  question?: string | undefined;
178
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
179
179
  allows_multiple_answers?: boolean | undefined;
180
180
  }>>;
181
181
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -244,15 +244,15 @@ export declare const platformSettingsSchema: z.ZodObject<{
244
244
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
245
245
  }, "strip", z.ZodTypeAny, {
246
246
  options: string[];
247
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
247
248
  duration_minutes?: number | undefined;
248
249
  question?: string | undefined;
249
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
250
250
  allows_multiple_answers?: boolean | undefined;
251
251
  }, {
252
252
  options: string[];
253
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
253
254
  duration_minutes?: number | undefined;
254
255
  question?: string | undefined;
255
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
256
256
  allows_multiple_answers?: boolean | undefined;
257
257
  }>>;
258
258
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -406,15 +406,15 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
406
406
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
407
407
  }, "strip", z.ZodTypeAny, {
408
408
  options: string[];
409
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
409
410
  duration_minutes?: number | undefined;
410
411
  question?: string | undefined;
411
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
412
412
  allows_multiple_answers?: boolean | undefined;
413
413
  }, {
414
414
  options: string[];
415
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
415
416
  duration_minutes?: number | undefined;
416
417
  question?: string | undefined;
417
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
418
418
  allows_multiple_answers?: boolean | undefined;
419
419
  }>>;
420
420
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -483,15 +483,15 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
483
483
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
484
484
  }, "strip", z.ZodTypeAny, {
485
485
  options: string[];
486
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
486
487
  duration_minutes?: number | undefined;
487
488
  question?: string | undefined;
488
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
489
489
  allows_multiple_answers?: boolean | undefined;
490
490
  }, {
491
491
  options: string[];
492
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
492
493
  duration_minutes?: number | undefined;
493
494
  question?: string | undefined;
494
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
495
495
  allows_multiple_answers?: boolean | undefined;
496
496
  }>>;
497
497
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -560,15 +560,15 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
560
560
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
561
561
  }, "strip", z.ZodTypeAny, {
562
562
  options: string[];
563
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
563
564
  duration_minutes?: number | undefined;
564
565
  question?: string | undefined;
565
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
566
566
  allows_multiple_answers?: boolean | undefined;
567
567
  }, {
568
568
  options: string[];
569
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
569
570
  duration_minutes?: number | undefined;
570
571
  question?: string | undefined;
571
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
572
572
  allows_multiple_answers?: boolean | undefined;
573
573
  }>>;
574
574
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -670,15 +670,15 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
670
670
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
671
671
  }, "strip", z.ZodTypeAny, {
672
672
  options: string[];
673
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
673
674
  duration_minutes?: number | undefined;
674
675
  question?: string | undefined;
675
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
676
676
  allows_multiple_answers?: boolean | undefined;
677
677
  }, {
678
678
  options: string[];
679
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
679
680
  duration_minutes?: number | undefined;
680
681
  question?: string | undefined;
681
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
682
682
  allows_multiple_answers?: boolean | undefined;
683
683
  }>>;
684
684
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -779,15 +779,15 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
779
779
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
780
780
  }, "strip", z.ZodTypeAny, {
781
781
  options: string[];
782
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
782
783
  duration_minutes?: number | undefined;
783
784
  question?: string | undefined;
784
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
785
785
  allows_multiple_answers?: boolean | undefined;
786
786
  }, {
787
787
  options: string[];
788
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
788
789
  duration_minutes?: number | undefined;
789
790
  question?: string | undefined;
790
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
791
791
  allows_multiple_answers?: boolean | undefined;
792
792
  }>>;
793
793
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -942,15 +942,15 @@ export declare const createPostInputSchema: z.ZodObject<{
942
942
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
943
943
  }, "strip", z.ZodTypeAny, {
944
944
  options: string[];
945
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
945
946
  duration_minutes?: number | undefined;
946
947
  question?: string | undefined;
947
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
948
948
  allows_multiple_answers?: boolean | undefined;
949
949
  }, {
950
950
  options: string[];
951
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
951
952
  duration_minutes?: number | undefined;
952
953
  question?: string | undefined;
953
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
954
954
  allows_multiple_answers?: boolean | undefined;
955
955
  }>>;
956
956
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1019,15 +1019,15 @@ export declare const createPostInputSchema: z.ZodObject<{
1019
1019
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1020
1020
  }, "strip", z.ZodTypeAny, {
1021
1021
  options: string[];
1022
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1022
1023
  duration_minutes?: number | undefined;
1023
1024
  question?: string | undefined;
1024
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1025
1025
  allows_multiple_answers?: boolean | undefined;
1026
1026
  }, {
1027
1027
  options: string[];
1028
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1028
1029
  duration_minutes?: number | undefined;
1029
1030
  question?: string | undefined;
1030
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1031
1031
  allows_multiple_answers?: boolean | undefined;
1032
1032
  }>>;
1033
1033
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1096,15 +1096,15 @@ export declare const createPostInputSchema: z.ZodObject<{
1096
1096
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1097
1097
  }, "strip", z.ZodTypeAny, {
1098
1098
  options: string[];
1099
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1099
1100
  duration_minutes?: number | undefined;
1100
1101
  question?: string | undefined;
1101
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1102
1102
  allows_multiple_answers?: boolean | undefined;
1103
1103
  }, {
1104
1104
  options: string[];
1105
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1105
1106
  duration_minutes?: number | undefined;
1106
1107
  question?: string | undefined;
1107
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1108
1108
  allows_multiple_answers?: boolean | undefined;
1109
1109
  }>>;
1110
1110
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1209,15 +1209,15 @@ export declare const createPostInputSchema: z.ZodObject<{
1209
1209
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1210
1210
  }, "strip", z.ZodTypeAny, {
1211
1211
  options: string[];
1212
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1212
1213
  duration_minutes?: number | undefined;
1213
1214
  question?: string | undefined;
1214
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1215
1215
  allows_multiple_answers?: boolean | undefined;
1216
1216
  }, {
1217
1217
  options: string[];
1218
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1218
1219
  duration_minutes?: number | undefined;
1219
1220
  question?: string | undefined;
1220
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1221
1221
  allows_multiple_answers?: boolean | undefined;
1222
1222
  }>>;
1223
1223
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1319,15 +1319,15 @@ export declare const createPostInputSchema: z.ZodObject<{
1319
1319
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1320
1320
  }, "strip", z.ZodTypeAny, {
1321
1321
  options: string[];
1322
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1322
1323
  duration_minutes?: number | undefined;
1323
1324
  question?: string | undefined;
1324
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1325
1325
  allows_multiple_answers?: boolean | undefined;
1326
1326
  }, {
1327
1327
  options: string[];
1328
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1328
1329
  duration_minutes?: number | undefined;
1329
1330
  question?: string | undefined;
1330
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1331
1331
  allows_multiple_answers?: boolean | undefined;
1332
1332
  }>>;
1333
1333
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1488,15 +1488,15 @@ export declare const createPostTool: {
1488
1488
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1489
1489
  }, "strip", z.ZodTypeAny, {
1490
1490
  options: string[];
1491
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1491
1492
  duration_minutes?: number | undefined;
1492
1493
  question?: string | undefined;
1493
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1494
1494
  allows_multiple_answers?: boolean | undefined;
1495
1495
  }, {
1496
1496
  options: string[];
1497
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1497
1498
  duration_minutes?: number | undefined;
1498
1499
  question?: string | undefined;
1499
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1500
1500
  allows_multiple_answers?: boolean | undefined;
1501
1501
  }>>;
1502
1502
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1565,15 +1565,15 @@ export declare const createPostTool: {
1565
1565
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1566
1566
  }, "strip", z.ZodTypeAny, {
1567
1567
  options: string[];
1568
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1568
1569
  duration_minutes?: number | undefined;
1569
1570
  question?: string | undefined;
1570
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1571
1571
  allows_multiple_answers?: boolean | undefined;
1572
1572
  }, {
1573
1573
  options: string[];
1574
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1574
1575
  duration_minutes?: number | undefined;
1575
1576
  question?: string | undefined;
1576
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1577
1577
  allows_multiple_answers?: boolean | undefined;
1578
1578
  }>>;
1579
1579
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1642,15 +1642,15 @@ export declare const createPostTool: {
1642
1642
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1643
1643
  }, "strip", z.ZodTypeAny, {
1644
1644
  options: string[];
1645
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1645
1646
  duration_minutes?: number | undefined;
1646
1647
  question?: string | undefined;
1647
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1648
1648
  allows_multiple_answers?: boolean | undefined;
1649
1649
  }, {
1650
1650
  options: string[];
1651
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1651
1652
  duration_minutes?: number | undefined;
1652
1653
  question?: string | undefined;
1653
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1654
1654
  allows_multiple_answers?: boolean | undefined;
1655
1655
  }>>;
1656
1656
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1755,15 +1755,15 @@ export declare const createPostTool: {
1755
1755
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1756
1756
  }, "strip", z.ZodTypeAny, {
1757
1757
  options: string[];
1758
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1758
1759
  duration_minutes?: number | undefined;
1759
1760
  question?: string | undefined;
1760
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1761
1761
  allows_multiple_answers?: boolean | undefined;
1762
1762
  }, {
1763
1763
  options: string[];
1764
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1764
1765
  duration_minutes?: number | undefined;
1765
1766
  question?: string | undefined;
1766
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1767
1767
  allows_multiple_answers?: boolean | undefined;
1768
1768
  }>>;
1769
1769
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -1865,15 +1865,15 @@ export declare const createPostTool: {
1865
1865
  allows_multiple_answers: z.ZodOptional<z.ZodBoolean>;
1866
1866
  }, "strip", z.ZodTypeAny, {
1867
1867
  options: string[];
1868
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1868
1869
  duration_minutes?: number | undefined;
1869
1870
  question?: string | undefined;
1870
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1871
1871
  allows_multiple_answers?: boolean | undefined;
1872
1872
  }, {
1873
1873
  options: string[];
1874
+ duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1874
1875
  duration_minutes?: number | undefined;
1875
1876
  question?: string | undefined;
1876
- duration?: "ONE_DAY" | "THREE_DAYS" | "SEVEN_DAYS" | "FOURTEEN_DAYS" | undefined;
1877
1877
  allows_multiple_answers?: boolean | undefined;
1878
1878
  }>>;
1879
1879
  reply_control: z.ZodOptional<z.ZodEnum<["everyone", "accounts_you_follow", "mentioned_only", "followers_only", "parent_post_author_only"]>>;
@@ -13,7 +13,7 @@ export const instagramSettingsSchema = z.object({
13
13
  .array(z.union([z.string(), z.object({ username: z.string().optional(), label: z.string().optional(), handle: z.string().optional() })]))
14
14
  .optional(),
15
15
  first_comment: z.string().optional(),
16
- media_alt_texts: z.record(z.string()).optional(),
16
+ media_alt_texts: z.record(z.string(), z.string()).optional(),
17
17
  reel_cover_url: z.string().optional(),
18
18
  reel_thumb_offset: z.number().nonnegative().optional(),
19
19
  });
@@ -21,7 +21,7 @@ export const platformSettingsSchema = z.object({
21
21
  __type: z.string().optional(),
22
22
  post_type: z.string().optional(),
23
23
  content_type: z.string().optional(),
24
- media_alt_texts: z.record(z.string()).optional(),
24
+ media_alt_texts: z.record(z.string(), z.string()).optional(),
25
25
  reel_cover_url: z.string().optional(),
26
26
  reel_thumb_offset: z.number().nonnegative().optional(),
27
27
  // X
@@ -37,13 +37,13 @@ export const platformSettingsSchema = z.object({
37
37
  reply_control: z.enum(['everyone', 'accounts_you_follow', 'mentioned_only', 'followers_only', 'parent_post_author_only']).optional(),
38
38
  topic_tag: z.string().optional(), // Threads single discovery topic tag
39
39
  share_to_instagram: z.boolean().optional(), // Threads: also share the published post to the linked Instagram account as a Story
40
- text_attachment: z.record(z.unknown()).optional(),
40
+ text_attachment: z.record(z.string(), z.unknown()).optional(),
41
41
  // Facebook
42
42
  text_format_preset_id: z.string().optional(),
43
43
  // LinkedIn
44
44
  document_title: z.string().optional(),
45
45
  document_filename: z.string().optional(),
46
- mentions: z.array(z.record(z.unknown())).optional(),
46
+ mentions: z.array(z.record(z.string(), z.unknown())).optional(),
47
47
  thumbnail_url: z.string().optional(),
48
48
  thumbnail_method: z.string().optional(),
49
49
  // TikTok
@@ -70,9 +70,9 @@ export const platformSettingsSchema = z.object({
70
70
  video_cover_url: z.string().optional(),
71
71
  cover_image_method: z.enum(['upload', 'frame', 'api']).optional(),
72
72
  // Google Business
73
- event: z.record(z.unknown()).optional(),
74
- offer: z.record(z.unknown()).optional(),
75
- cta: z.record(z.unknown()).optional(),
73
+ event: z.record(z.string(), z.unknown()).optional(),
74
+ offer: z.record(z.string(), z.unknown()).optional(),
75
+ cta: z.record(z.string(), z.unknown()).optional(),
76
76
  // YouTube
77
77
  notify_subscribers: z.boolean().optional(),
78
78
  add_shorts_hashtag: z.boolean().optional(),