posterly-mcp-server 0.25.0 → 0.26.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
@@ -108,7 +108,7 @@ Add the same server definition to your Cursor MCP settings:
108
108
 
109
109
  ## Available tools
110
110
 
111
- `posterly-mcp-server@0.25.0` exposes 72 tools.
111
+ `posterly-mcp-server@0.26.0` exposes 73 tools.
112
112
 
113
113
  Public setup tools work before `POSTERLY_API_KEY` exists:
114
114
 
@@ -184,6 +184,7 @@ Authenticated tools require `POSTERLY_API_KEY`:
184
184
  > Google Business tip: pass `account_id` (the integer `id` from `list_accounts`) to every GBP tool. If you use `location_id` instead, it is the numeric `location_id` from `list_accounts` (the GBP location id), not the `ChIJ...` Place ID that `get_google_business_review_link` returns. Passing the Place ID resolves to no account and returns "Google Business Profile account not found".
185
185
 
186
186
  - `list_activity`
187
+ - `get_updates` (read the latest posterly product updates and news)
187
188
  - `list_webhooks`
188
189
  - `create_webhook` (create a webhook after explicit confirmation)
189
190
  - `update_webhook` (update a webhook after explicit confirmation)
@@ -240,7 +241,7 @@ This package uses the Posterly API/MCP add-on:
240
241
 
241
242
  - `$3/month` add-on
242
243
  - `100 create-post requests/hour` per API key, with separate media/read limits
243
- - user-created API keys per plan: Starter 1, Pro 2, Power User 3, Agency 4
244
+ - user-created API keys per plan: Starter 1, Pro 2, Power 3, Agency 4
244
245
  - works across all 17 supported platforms
245
246
 
246
247
  Each API call counts as one request, so use `create_posts_batch` when you need to schedule multiple posts in one confirmed operation.
@@ -1,9 +1,9 @@
1
1
  export declare const PLATFORM_MANIFEST: {
2
2
  readonly source: "lib/api-platform-registry.ts";
3
- readonly supportedPlatformIds: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
4
- readonly plannedPlatformIds: readonly ["reddit", "medium", "slack", "skool", "whop"];
5
- readonly allPlatformIds: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
6
- readonly supportedPlatformInputs: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
3
+ readonly supportedPlatformIds: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
4
+ readonly plannedPlatformIds: readonly ["reddit", "medium", "skool", "whop"];
5
+ readonly allPlatformIds: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
6
+ readonly supportedPlatformInputs: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
7
7
  readonly allPlatformInputs: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "medium", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "youtube"];
8
8
  readonly platformAliases: {
9
9
  readonly bluesky: "bluesky";
@@ -35,7 +35,7 @@ export declare const PLATFORM_MANIFEST: {
35
35
  };
36
36
  readonly helperNames: readonly ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
37
37
  readonly analyticsPlatformIds: readonly ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
38
- readonly connectTargetIds: readonly ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
38
+ readonly connectTargetIds: readonly ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
39
39
  readonly connectInputs: readonly ["bluesky", "devto", "discord", "facebook", "facebook_instagram", "facebook_pages", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "instagram_direct", "lemmy", "linkedin", "linkedin-company", "linkedin-page", "linkedin_company", "linkedin_page", "linkedin_personal", "mastodon", "medium", "meta", "meta_business", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "x_twitter", "youtube"];
40
40
  readonly connectAliases: {
41
41
  readonly bluesky: "bluesky";
@@ -170,6 +170,14 @@ export declare const PLATFORM_MANIFEST: {
170
170
  readonly postTypes: readonly ["text", "image", "video", "carousel"];
171
171
  readonly analyticsSupported: false;
172
172
  readonly helpers: readonly [];
173
+ }, {
174
+ readonly id: "slack";
175
+ readonly label: "Slack";
176
+ readonly status: "supported";
177
+ readonly aliases: readonly [];
178
+ readonly postTypes: readonly ["text", "image", "video", "carousel"];
179
+ readonly analyticsSupported: false;
180
+ readonly helpers: readonly [];
173
181
  }, {
174
182
  readonly id: "mastodon";
175
183
  readonly label: "Mastodon";
@@ -226,14 +234,6 @@ export declare const PLATFORM_MANIFEST: {
226
234
  readonly postTypes: readonly [];
227
235
  readonly analyticsSupported: false;
228
236
  readonly helpers: readonly [];
229
- }, {
230
- readonly id: "slack";
231
- readonly label: "Slack";
232
- readonly status: "planned";
233
- readonly aliases: readonly [];
234
- readonly postTypes: readonly [];
235
- readonly analyticsSupported: false;
236
- readonly helpers: readonly [];
237
237
  }, {
238
238
  readonly id: "skool";
239
239
  readonly label: "Skool";
@@ -335,6 +335,12 @@ export declare const PLATFORM_MANIFEST: {
335
335
  readonly status: "supported";
336
336
  readonly aliases: readonly [];
337
337
  readonly method: "manual_credentials";
338
+ }, {
339
+ readonly id: "slack";
340
+ readonly label: "Slack";
341
+ readonly status: "supported";
342
+ readonly aliases: readonly [];
343
+ readonly method: "dashboard_oauth";
338
344
  }, {
339
345
  readonly id: "mastodon";
340
346
  readonly label: "Mastodon";
@@ -377,12 +383,6 @@ export declare const PLATFORM_MANIFEST: {
377
383
  readonly status: "planned";
378
384
  readonly aliases: readonly [];
379
385
  readonly method: "planned";
380
- }, {
381
- readonly id: "slack";
382
- readonly label: "Slack";
383
- readonly status: "planned";
384
- readonly aliases: readonly [];
385
- readonly method: "planned";
386
386
  }, {
387
387
  readonly id: "skool";
388
388
  readonly label: "Skool";
@@ -397,12 +397,12 @@ export declare const PLATFORM_MANIFEST: {
397
397
  readonly method: "planned";
398
398
  }];
399
399
  };
400
- export declare const SUPPORTED_PLATFORM_IDS: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
401
- export declare const PLANNED_PLATFORM_IDS: readonly ["reddit", "medium", "slack", "skool", "whop"];
402
- export declare const ALL_PLATFORM_IDS: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
403
- export declare const SUPPORTED_PLATFORM_INPUTS: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
400
+ export declare const SUPPORTED_PLATFORM_IDS: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
401
+ export declare const PLANNED_PLATFORM_IDS: readonly ["reddit", "medium", "skool", "whop"];
402
+ export declare const ALL_PLATFORM_IDS: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
403
+ export declare const SUPPORTED_PLATFORM_INPUTS: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
404
404
  export declare const ALL_PLATFORM_INPUTS: readonly ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "medium", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "youtube"];
405
405
  export declare const PLATFORM_HELPER_NAMES: readonly ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
406
- export declare const CONNECT_TARGET_IDS: readonly ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
406
+ export declare const CONNECT_TARGET_IDS: readonly ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
407
407
  export declare const CONNECT_INPUTS: readonly ["bluesky", "devto", "discord", "facebook", "facebook_instagram", "facebook_pages", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "instagram_direct", "lemmy", "linkedin", "linkedin-company", "linkedin-page", "linkedin_company", "linkedin_page", "linkedin_personal", "mastodon", "medium", "meta", "meta_business", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "x_twitter", "youtube"];
408
408
  export declare const ANALYTICS_PLATFORM_IDS: readonly ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
@@ -14,6 +14,7 @@ export const PLATFORM_MANIFEST = {
14
14
  "telegram",
15
15
  "bluesky",
16
16
  "discord",
17
+ "slack",
17
18
  "mastodon",
18
19
  "devto",
19
20
  "hashnode",
@@ -23,7 +24,6 @@ export const PLATFORM_MANIFEST = {
23
24
  "plannedPlatformIds": [
24
25
  "reddit",
25
26
  "medium",
26
- "slack",
27
27
  "skool",
28
28
  "whop"
29
29
  ],
@@ -40,6 +40,7 @@ export const PLATFORM_MANIFEST = {
40
40
  "telegram",
41
41
  "bluesky",
42
42
  "discord",
43
+ "slack",
43
44
  "mastodon",
44
45
  "devto",
45
46
  "hashnode",
@@ -47,7 +48,6 @@ export const PLATFORM_MANIFEST = {
47
48
  "lemmy",
48
49
  "reddit",
49
50
  "medium",
50
- "slack",
51
51
  "skool",
52
52
  "whop"
53
53
  ],
@@ -67,6 +67,7 @@ export const PLATFORM_MANIFEST = {
67
67
  "linkedin",
68
68
  "mastodon",
69
69
  "pinterest",
70
+ "slack",
70
71
  "telegram",
71
72
  "threads",
72
73
  "tiktok",
@@ -162,6 +163,7 @@ export const PLATFORM_MANIFEST = {
162
163
  "telegram",
163
164
  "bluesky",
164
165
  "discord",
166
+ "slack",
165
167
  "mastodon",
166
168
  "devto",
167
169
  "hashnode",
@@ -169,7 +171,6 @@ export const PLATFORM_MANIFEST = {
169
171
  "lemmy",
170
172
  "reddit",
171
173
  "medium",
172
- "slack",
173
174
  "skool",
174
175
  "whop"
175
176
  ],
@@ -435,6 +436,20 @@ export const PLATFORM_MANIFEST = {
435
436
  "analyticsSupported": false,
436
437
  "helpers": []
437
438
  },
439
+ {
440
+ "id": "slack",
441
+ "label": "Slack",
442
+ "status": "supported",
443
+ "aliases": [],
444
+ "postTypes": [
445
+ "text",
446
+ "image",
447
+ "video",
448
+ "carousel"
449
+ ],
450
+ "analyticsSupported": false,
451
+ "helpers": []
452
+ },
438
453
  {
439
454
  "id": "mastodon",
440
455
  "label": "Mastodon",
@@ -515,15 +530,6 @@ export const PLATFORM_MANIFEST = {
515
530
  "analyticsSupported": false,
516
531
  "helpers": []
517
532
  },
518
- {
519
- "id": "slack",
520
- "label": "Slack",
521
- "status": "planned",
522
- "aliases": [],
523
- "postTypes": [],
524
- "analyticsSupported": false,
525
- "helpers": []
526
- },
527
533
  {
528
534
  "id": "skool",
529
535
  "label": "Skool",
@@ -663,6 +669,13 @@ export const PLATFORM_MANIFEST = {
663
669
  "aliases": [],
664
670
  "method": "manual_credentials"
665
671
  },
672
+ {
673
+ "id": "slack",
674
+ "label": "Slack",
675
+ "status": "supported",
676
+ "aliases": [],
677
+ "method": "dashboard_oauth"
678
+ },
666
679
  {
667
680
  "id": "mastodon",
668
681
  "label": "Mastodon",
@@ -712,13 +725,6 @@ export const PLATFORM_MANIFEST = {
712
725
  "aliases": [],
713
726
  "method": "planned"
714
727
  },
715
- {
716
- "id": "slack",
717
- "label": "Slack",
718
- "status": "planned",
719
- "aliases": [],
720
- "method": "planned"
721
- },
722
728
  {
723
729
  "id": "skool",
724
730
  "label": "Skool",
@@ -735,12 +741,12 @@ export const PLATFORM_MANIFEST = {
735
741
  }
736
742
  ]
737
743
  };
738
- export const SUPPORTED_PLATFORM_IDS = ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
739
- export const PLANNED_PLATFORM_IDS = ["reddit", "medium", "slack", "skool", "whop"];
740
- export const ALL_PLATFORM_IDS = ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
741
- export const SUPPORTED_PLATFORM_INPUTS = ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
744
+ export const SUPPORTED_PLATFORM_IDS = ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy"];
745
+ export const PLANNED_PLATFORM_IDS = ["reddit", "medium", "skool", "whop"];
746
+ export const ALL_PLATFORM_IDS = ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
747
+ export const SUPPORTED_PLATFORM_INPUTS = ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"];
742
748
  export const ALL_PLATFORM_INPUTS = ["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "medium", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "youtube"];
743
749
  export const PLATFORM_HELPER_NAMES = ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
744
- export const CONNECT_TARGET_IDS = ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "slack", "skool", "whop"];
750
+ export const CONNECT_TARGET_IDS = ["instagram", "meta", "facebook", "youtube", "tiktok", "linkedin", "linkedin_page", "threads", "google_business", "pinterest", "twitter", "telegram", "bluesky", "discord", "slack", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "skool", "whop"];
745
751
  export const CONNECT_INPUTS = ["bluesky", "devto", "discord", "facebook", "facebook_instagram", "facebook_pages", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "instagram_direct", "lemmy", "linkedin", "linkedin-company", "linkedin-page", "linkedin_company", "linkedin_page", "linkedin_personal", "mastodon", "medium", "meta", "meta_business", "pinterest", "reddit", "skool", "slack", "telegram", "threads", "tiktok", "twitter", "whop", "wordpress", "x", "x_twitter", "youtube"];
746
752
  export const ANALYTICS_PLATFORM_IDS = ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
package/dist/index.js CHANGED
@@ -50,6 +50,7 @@ import { listGoogleBusinessMediaTool } from './tools/list-google-business-media.
50
50
  import { addGoogleBusinessMediaTool } from './tools/add-google-business-media.js';
51
51
  import { deleteGoogleBusinessMediaTool } from './tools/delete-google-business-media.js';
52
52
  import { listActivityTool } from './tools/list-activity.js';
53
+ import { getUpdatesTool } from './tools/get-updates.js';
53
54
  import { listWebhooksTool } from './tools/list-webhooks.js';
54
55
  import { createWebhookTool } from './tools/create-webhook.js';
55
56
  import { updateWebhookTool } from './tools/update-webhook.js';
@@ -675,6 +676,15 @@ server.tool(listActivityTool.name, listActivityTool.description, listActivityToo
675
676
  return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
676
677
  }
677
678
  });
679
+ server.tool(getUpdatesTool.name, getUpdatesTool.description, getUpdatesTool.inputSchema.shape, async (input) => {
680
+ try {
681
+ const text = await getUpdatesTool.execute(client, input);
682
+ return { content: [{ type: 'text', text }] };
683
+ }
684
+ catch (err) {
685
+ return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
686
+ }
687
+ });
678
688
  server.tool(listWebhooksTool.name, listWebhooksTool.description, listWebhooksTool.inputSchema.shape, async (input) => {
679
689
  try {
680
690
  const text = await listWebhooksTool.execute(client, input);
@@ -539,6 +539,22 @@ export interface ActivityResponse {
539
539
  total: number;
540
540
  limit: number;
541
541
  }
542
+ export interface UpdateEntry {
543
+ slug: string;
544
+ title: string;
545
+ date: string;
546
+ version: string;
547
+ summary: string;
548
+ type: string | null;
549
+ areas: string[];
550
+ url: string;
551
+ image?: string;
552
+ video?: string;
553
+ content?: string;
554
+ }
555
+ export interface UpdatesResponse {
556
+ updates: UpdateEntry[];
557
+ }
542
558
  export interface ApiWebhook {
543
559
  id: string;
544
560
  workspace_id: string | null;
@@ -1006,6 +1022,11 @@ export declare class PosterlyClient {
1006
1022
  type?: 'all' | 'activity' | 'publish';
1007
1023
  limit?: number;
1008
1024
  }): Promise<ActivityResponse>;
1025
+ getUpdates(params?: {
1026
+ limit?: number;
1027
+ since?: string;
1028
+ include_content?: boolean;
1029
+ }): Promise<UpdatesResponse>;
1009
1030
  listWebhooks(params?: {
1010
1031
  workspace_id?: string;
1011
1032
  }): Promise<{
@@ -416,6 +416,17 @@ export class PosterlyClient {
416
416
  const qs = searchParams.toString();
417
417
  return this.request('GET', `/activity${qs ? `?${qs}` : ''}`);
418
418
  }
419
+ async getUpdates(params) {
420
+ const searchParams = new URLSearchParams();
421
+ if (params?.limit)
422
+ searchParams.set('limit', String(params.limit));
423
+ if (params?.since)
424
+ searchParams.set('since', params.since);
425
+ if (params?.include_content)
426
+ searchParams.set('include_content', 'true');
427
+ const qs = searchParams.toString();
428
+ return this.request('GET', `/updates${qs ? `?${qs}` : ''}`);
429
+ }
419
430
  async listWebhooks(params) {
420
431
  const searchParams = new URLSearchParams();
421
432
  if (params?.workspace_id)
@@ -1 +1 @@
1
- export declare const POSTERLY_MCP_VERSION = "0.25.0";
1
+ export declare const POSTERLY_MCP_VERSION = "0.26.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.25.0';
8
+ export const POSTERLY_MCP_VERSION = '0.26.0';
@@ -9,12 +9,12 @@ export declare const createConnectSessionTool: {
9
9
  auto_start: z.ZodOptional<z.ZodBoolean>;
10
10
  debug: z.ZodOptional<z.ZodBoolean>;
11
11
  }, "strip", z.ZodTypeAny, {
12
- platform: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter";
12
+ platform: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter";
13
13
  workspace_id?: string | undefined;
14
14
  auto_start?: boolean | undefined;
15
15
  debug?: boolean | undefined;
16
16
  }, {
17
- platform: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter";
17
+ platform: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter";
18
18
  workspace_id?: string | undefined;
19
19
  auto_start?: boolean | undefined;
20
20
  debug?: boolean | undefined;
@@ -309,7 +309,7 @@ export declare const platformSettingsSchema: z.ZodObject<{
309
309
  export declare const createPostPayloadInputSchema: z.ZodObject<{
310
310
  account_id: z.ZodOptional<z.ZodString>;
311
311
  username: z.ZodOptional<z.ZodString>;
312
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
312
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
313
313
  caption: z.ZodOptional<z.ZodString>;
314
314
  scheduled_at: z.ZodOptional<z.ZodString>;
315
315
  media_url: z.ZodOptional<z.ZodString>;
@@ -625,7 +625,7 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
625
625
  workspace_id: z.ZodOptional<z.ZodString>;
626
626
  }, "strip", z.ZodTypeAny, {
627
627
  workspace_id?: string | undefined;
628
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
628
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
629
629
  account_id?: string | undefined;
630
630
  scheduled_at?: string | undefined;
631
631
  media_url?: string | undefined;
@@ -734,7 +734,7 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
734
734
  }, z.ZodTypeAny, "passthrough"> | undefined;
735
735
  }, {
736
736
  workspace_id?: string | undefined;
737
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
737
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
738
738
  account_id?: string | undefined;
739
739
  scheduled_at?: string | undefined;
740
740
  media_url?: string | undefined;
@@ -845,7 +845,7 @@ export declare const createPostPayloadInputSchema: z.ZodObject<{
845
845
  export declare const createPostInputSchema: z.ZodObject<{
846
846
  account_id: z.ZodOptional<z.ZodString>;
847
847
  username: z.ZodOptional<z.ZodString>;
848
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
848
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
849
849
  caption: z.ZodOptional<z.ZodString>;
850
850
  scheduled_at: z.ZodOptional<z.ZodString>;
851
851
  media_url: z.ZodOptional<z.ZodString>;
@@ -1164,7 +1164,7 @@ export declare const createPostInputSchema: z.ZodObject<{
1164
1164
  }, "strip", z.ZodTypeAny, {
1165
1165
  confirm: true;
1166
1166
  workspace_id?: string | undefined;
1167
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1167
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1168
1168
  account_id?: string | undefined;
1169
1169
  scheduled_at?: string | undefined;
1170
1170
  media_url?: string | undefined;
@@ -1274,7 +1274,7 @@ export declare const createPostInputSchema: z.ZodObject<{
1274
1274
  }, {
1275
1275
  confirm: true;
1276
1276
  workspace_id?: string | undefined;
1277
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1277
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1278
1278
  account_id?: string | undefined;
1279
1279
  scheduled_at?: string | undefined;
1280
1280
  media_url?: string | undefined;
@@ -1391,7 +1391,7 @@ export declare const createPostTool: {
1391
1391
  inputSchema: z.ZodObject<{
1392
1392
  account_id: z.ZodOptional<z.ZodString>;
1393
1393
  username: z.ZodOptional<z.ZodString>;
1394
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
1394
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
1395
1395
  caption: z.ZodOptional<z.ZodString>;
1396
1396
  scheduled_at: z.ZodOptional<z.ZodString>;
1397
1397
  media_url: z.ZodOptional<z.ZodString>;
@@ -1710,7 +1710,7 @@ export declare const createPostTool: {
1710
1710
  }, "strip", z.ZodTypeAny, {
1711
1711
  confirm: true;
1712
1712
  workspace_id?: string | undefined;
1713
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1713
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1714
1714
  account_id?: string | undefined;
1715
1715
  scheduled_at?: string | undefined;
1716
1716
  media_url?: string | undefined;
@@ -1820,7 +1820,7 @@ export declare const createPostTool: {
1820
1820
  }, {
1821
1821
  confirm: true;
1822
1822
  workspace_id?: string | undefined;
1823
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1823
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
1824
1824
  account_id?: string | undefined;
1825
1825
  scheduled_at?: string | undefined;
1826
1826
  media_url?: string | undefined;
@@ -8,7 +8,7 @@ export declare const createPostsBatchTool: {
8
8
  posts: z.ZodArray<z.ZodObject<{
9
9
  account_id: z.ZodOptional<z.ZodString>;
10
10
  username: z.ZodOptional<z.ZodString>;
11
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
11
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
12
12
  caption: z.ZodOptional<z.ZodString>;
13
13
  scheduled_at: z.ZodOptional<z.ZodString>;
14
14
  media_url: z.ZodOptional<z.ZodString>;
@@ -324,7 +324,7 @@ export declare const createPostsBatchTool: {
324
324
  workspace_id: z.ZodOptional<z.ZodString>;
325
325
  }, "strip", z.ZodTypeAny, {
326
326
  workspace_id?: string | undefined;
327
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
327
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
328
328
  account_id?: string | undefined;
329
329
  scheduled_at?: string | undefined;
330
330
  media_url?: string | undefined;
@@ -433,7 +433,7 @@ export declare const createPostsBatchTool: {
433
433
  }, z.ZodTypeAny, "passthrough"> | undefined;
434
434
  }, {
435
435
  workspace_id?: string | undefined;
436
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
436
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
437
437
  account_id?: string | undefined;
438
438
  scheduled_at?: string | undefined;
439
439
  media_url?: string | undefined;
@@ -546,7 +546,7 @@ export declare const createPostsBatchTool: {
546
546
  confirm: true;
547
547
  posts: {
548
548
  workspace_id?: string | undefined;
549
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
549
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
550
550
  account_id?: string | undefined;
551
551
  scheduled_at?: string | undefined;
552
552
  media_url?: string | undefined;
@@ -658,7 +658,7 @@ export declare const createPostsBatchTool: {
658
658
  confirm: true;
659
659
  posts: {
660
660
  workspace_id?: string | undefined;
661
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
661
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
662
662
  account_id?: string | undefined;
663
663
  scheduled_at?: string | undefined;
664
664
  media_url?: string | undefined;
@@ -11,12 +11,12 @@ export declare const getConnectLinkTool: {
11
11
  }, "strip", z.ZodTypeAny, {
12
12
  workspace_id?: string | undefined;
13
13
  include_planned?: boolean | undefined;
14
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter" | undefined;
14
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter" | undefined;
15
15
  debug?: boolean | undefined;
16
16
  }, {
17
17
  workspace_id?: string | undefined;
18
18
  include_planned?: boolean | undefined;
19
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter" | undefined;
19
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | "meta" | "linkedin_page" | "facebook_instagram" | "facebook_pages" | "instagram_direct" | "linkedin-company" | "linkedin-page" | "linkedin_company" | "linkedin_personal" | "meta_business" | "x_twitter" | undefined;
20
20
  debug?: boolean | undefined;
21
21
  }>;
22
22
  execute(client: PosterlyClient, input: {
@@ -9,11 +9,11 @@ export declare const getPlatformSchemaTool: {
9
9
  include_planned: z.ZodOptional<z.ZodBoolean>;
10
10
  }, "strip", z.ZodTypeAny, {
11
11
  include_planned?: boolean | undefined;
12
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
12
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
13
13
  account_id?: string | undefined;
14
14
  }, {
15
15
  include_planned?: boolean | undefined;
16
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "slack" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
16
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "reddit" | "medium" | "skool" | "whop" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
17
17
  account_id?: string | undefined;
18
18
  }>;
19
19
  execute(client: PosterlyClient, input: {
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import type { PosterlyClient } from '../lib/api-client.js';
3
+ export declare const getUpdatesTool: {
4
+ name: string;
5
+ description: string;
6
+ inputSchema: z.ZodObject<{
7
+ limit: z.ZodOptional<z.ZodNumber>;
8
+ since: z.ZodOptional<z.ZodString>;
9
+ include_content: z.ZodOptional<z.ZodBoolean>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ limit?: number | undefined;
12
+ since?: string | undefined;
13
+ include_content?: boolean | undefined;
14
+ }, {
15
+ limit?: number | undefined;
16
+ since?: string | undefined;
17
+ include_content?: boolean | undefined;
18
+ }>;
19
+ execute(client: PosterlyClient, input: {
20
+ limit?: number;
21
+ since?: string;
22
+ include_content?: boolean;
23
+ }): Promise<string>;
24
+ };
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ export const getUpdatesTool = {
3
+ name: 'get_updates',
4
+ description: 'Get the latest posterly product updates and news from the updates feed: new features, improvements, and fixes. Requires an active posterly subscription.',
5
+ inputSchema: z.object({
6
+ limit: z.number().int().min(1).max(50).optional().describe('Number of updates to return. Default 10, max 50.'),
7
+ since: z.string().optional().describe('ISO date. Return updates published on or after this date.'),
8
+ include_content: z.boolean().optional().describe('Include the full markdown body of each update. Defaults to false.'),
9
+ }),
10
+ async execute(client, input) {
11
+ const result = await client.getUpdates(input);
12
+ if (result.updates.length === 0) {
13
+ return 'No posterly updates found.';
14
+ }
15
+ const lines = [`Latest posterly updates (${result.updates.length}):`];
16
+ for (const update of result.updates) {
17
+ const meta = [update.date, update.version ? `v${update.version}` : null, update.type]
18
+ .filter(Boolean)
19
+ .join(', ');
20
+ lines.push(`- ${update.title} [${meta}]${update.summary ? `: ${update.summary}` : ''}`);
21
+ if (update.url)
22
+ lines.push(` ${update.url}`);
23
+ if (update.content) {
24
+ lines.push('', update.content.trim(), '');
25
+ }
26
+ }
27
+ return lines.join('\n');
28
+ },
29
+ };
@@ -5,20 +5,20 @@ export declare const listPostsTool: {
5
5
  description: string;
6
6
  inputSchema: z.ZodObject<{
7
7
  status: z.ZodOptional<z.ZodString>;
8
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
8
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
9
9
  account_id: z.ZodOptional<z.ZodString>;
10
10
  limit: z.ZodOptional<z.ZodNumber>;
11
11
  workspace_id: z.ZodOptional<z.ZodString>;
12
12
  }, "strip", z.ZodTypeAny, {
13
13
  status?: string | undefined;
14
14
  workspace_id?: string | undefined;
15
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
15
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
16
16
  account_id?: string | undefined;
17
17
  limit?: number | undefined;
18
18
  }, {
19
19
  status?: string | undefined;
20
20
  workspace_id?: string | undefined;
21
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
21
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
22
22
  account_id?: string | undefined;
23
23
  limit?: number | undefined;
24
24
  }>;
@@ -6,16 +6,16 @@ export declare const triggerPlatformHelperTool: {
6
6
  inputSchema: z.ZodObject<{
7
7
  helper: z.ZodEnum<["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"]>;
8
8
  account_id: z.ZodOptional<z.ZodString>;
9
- platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
9
+ platform: z.ZodOptional<z.ZodEnum<["bluesky", "devto", "discord", "facebook", "gmb", "google-business", "google_business", "google_business_profile", "hashnode", "instagram", "instagram-standalone", "lemmy", "linkedin", "mastodon", "pinterest", "slack", "telegram", "threads", "tiktok", "twitter", "wordpress", "x", "youtube"]>>;
10
10
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
11
11
  }, "strip", z.ZodTypeAny, {
12
12
  helper: "linkedin.recent_mentions" | "pinterest.boards" | "tiktok.creator_info" | "x.quota";
13
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
13
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
14
14
  account_id?: string | undefined;
15
15
  params?: Record<string, unknown> | undefined;
16
16
  }, {
17
17
  helper: "linkedin.recent_mentions" | "pinterest.boards" | "tiktok.creator_info" | "x.quota";
18
- platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
18
+ platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "telegram" | "bluesky" | "discord" | "slack" | "mastodon" | "devto" | "hashnode" | "wordpress" | "lemmy" | "gmb" | "google-business" | "google_business_profile" | "x" | undefined;
19
19
  account_id?: string | undefined;
20
20
  params?: Record<string, unknown> | undefined;
21
21
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "posterly-mcp-server",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "MCP server for posterly: schedule and publish social media posts across 11 platforms from any MCP client (Claude, ChatGPT, Cursor, Windsurf, Cline, and more)",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.poster.ly/mcp",
@@ -14,6 +14,7 @@ export const PLATFORM_MANIFEST = {
14
14
  "telegram",
15
15
  "bluesky",
16
16
  "discord",
17
+ "slack",
17
18
  "mastodon",
18
19
  "devto",
19
20
  "hashnode",
@@ -23,7 +24,6 @@ export const PLATFORM_MANIFEST = {
23
24
  "plannedPlatformIds": [
24
25
  "reddit",
25
26
  "medium",
26
- "slack",
27
27
  "skool",
28
28
  "whop"
29
29
  ],
@@ -40,6 +40,7 @@ export const PLATFORM_MANIFEST = {
40
40
  "telegram",
41
41
  "bluesky",
42
42
  "discord",
43
+ "slack",
43
44
  "mastodon",
44
45
  "devto",
45
46
  "hashnode",
@@ -47,7 +48,6 @@ export const PLATFORM_MANIFEST = {
47
48
  "lemmy",
48
49
  "reddit",
49
50
  "medium",
50
- "slack",
51
51
  "skool",
52
52
  "whop"
53
53
  ],
@@ -67,6 +67,7 @@ export const PLATFORM_MANIFEST = {
67
67
  "linkedin",
68
68
  "mastodon",
69
69
  "pinterest",
70
+ "slack",
70
71
  "telegram",
71
72
  "threads",
72
73
  "tiktok",
@@ -162,6 +163,7 @@ export const PLATFORM_MANIFEST = {
162
163
  "telegram",
163
164
  "bluesky",
164
165
  "discord",
166
+ "slack",
165
167
  "mastodon",
166
168
  "devto",
167
169
  "hashnode",
@@ -169,7 +171,6 @@ export const PLATFORM_MANIFEST = {
169
171
  "lemmy",
170
172
  "reddit",
171
173
  "medium",
172
- "slack",
173
174
  "skool",
174
175
  "whop"
175
176
  ],
@@ -435,6 +436,20 @@ export const PLATFORM_MANIFEST = {
435
436
  "analyticsSupported": false,
436
437
  "helpers": []
437
438
  },
439
+ {
440
+ "id": "slack",
441
+ "label": "Slack",
442
+ "status": "supported",
443
+ "aliases": [],
444
+ "postTypes": [
445
+ "text",
446
+ "image",
447
+ "video",
448
+ "carousel"
449
+ ],
450
+ "analyticsSupported": false,
451
+ "helpers": []
452
+ },
438
453
  {
439
454
  "id": "mastodon",
440
455
  "label": "Mastodon",
@@ -515,15 +530,6 @@ export const PLATFORM_MANIFEST = {
515
530
  "analyticsSupported": false,
516
531
  "helpers": []
517
532
  },
518
- {
519
- "id": "slack",
520
- "label": "Slack",
521
- "status": "planned",
522
- "aliases": [],
523
- "postTypes": [],
524
- "analyticsSupported": false,
525
- "helpers": []
526
- },
527
533
  {
528
534
  "id": "skool",
529
535
  "label": "Skool",
@@ -663,6 +669,13 @@ export const PLATFORM_MANIFEST = {
663
669
  "aliases": [],
664
670
  "method": "manual_credentials"
665
671
  },
672
+ {
673
+ "id": "slack",
674
+ "label": "Slack",
675
+ "status": "supported",
676
+ "aliases": [],
677
+ "method": "dashboard_oauth"
678
+ },
666
679
  {
667
680
  "id": "mastodon",
668
681
  "label": "Mastodon",
@@ -712,13 +725,6 @@ export const PLATFORM_MANIFEST = {
712
725
  "aliases": [],
713
726
  "method": "planned"
714
727
  },
715
- {
716
- "id": "slack",
717
- "label": "Slack",
718
- "status": "planned",
719
- "aliases": [],
720
- "method": "planned"
721
- },
722
728
  {
723
729
  "id": "skool",
724
730
  "label": "Skool",
@@ -735,12 +741,12 @@ export const PLATFORM_MANIFEST = {
735
741
  }
736
742
  ]
737
743
  } as const;
738
- export const SUPPORTED_PLATFORM_IDS = ["instagram","facebook","tiktok","twitter","linkedin","youtube","pinterest","threads","google_business","telegram","bluesky","discord","mastodon","devto","hashnode","wordpress","lemmy"] as const;
739
- export const PLANNED_PLATFORM_IDS = ["reddit","medium","slack","skool","whop"] as const;
740
- export const ALL_PLATFORM_IDS = ["instagram","facebook","tiktok","twitter","linkedin","youtube","pinterest","threads","google_business","telegram","bluesky","discord","mastodon","devto","hashnode","wordpress","lemmy","reddit","medium","slack","skool","whop"] as const;
741
- export const SUPPORTED_PLATFORM_INPUTS = ["bluesky","devto","discord","facebook","gmb","google-business","google_business","google_business_profile","hashnode","instagram","instagram-standalone","lemmy","linkedin","mastodon","pinterest","telegram","threads","tiktok","twitter","wordpress","x","youtube"] as const;
744
+ export const SUPPORTED_PLATFORM_IDS = ["instagram","facebook","tiktok","twitter","linkedin","youtube","pinterest","threads","google_business","telegram","bluesky","discord","slack","mastodon","devto","hashnode","wordpress","lemmy"] as const;
745
+ export const PLANNED_PLATFORM_IDS = ["reddit","medium","skool","whop"] as const;
746
+ export const ALL_PLATFORM_IDS = ["instagram","facebook","tiktok","twitter","linkedin","youtube","pinterest","threads","google_business","telegram","bluesky","discord","slack","mastodon","devto","hashnode","wordpress","lemmy","reddit","medium","skool","whop"] as const;
747
+ export const SUPPORTED_PLATFORM_INPUTS = ["bluesky","devto","discord","facebook","gmb","google-business","google_business","google_business_profile","hashnode","instagram","instagram-standalone","lemmy","linkedin","mastodon","pinterest","slack","telegram","threads","tiktok","twitter","wordpress","x","youtube"] as const;
742
748
  export const ALL_PLATFORM_INPUTS = ["bluesky","devto","discord","facebook","gmb","google-business","google_business","google_business_profile","hashnode","instagram","instagram-standalone","lemmy","linkedin","mastodon","medium","pinterest","reddit","skool","slack","telegram","threads","tiktok","twitter","whop","wordpress","x","youtube"] as const;
743
749
  export const PLATFORM_HELPER_NAMES = ["linkedin.recent_mentions","pinterest.boards","tiktok.creator_info","x.quota"] as const;
744
- export const CONNECT_TARGET_IDS = ["instagram","meta","facebook","youtube","tiktok","linkedin","linkedin_page","threads","google_business","pinterest","twitter","telegram","bluesky","discord","mastodon","devto","hashnode","wordpress","lemmy","reddit","medium","slack","skool","whop"] as const;
750
+ export const CONNECT_TARGET_IDS = ["instagram","meta","facebook","youtube","tiktok","linkedin","linkedin_page","threads","google_business","pinterest","twitter","telegram","bluesky","discord","slack","mastodon","devto","hashnode","wordpress","lemmy","reddit","medium","skool","whop"] as const;
745
751
  export const CONNECT_INPUTS = ["bluesky","devto","discord","facebook","facebook_instagram","facebook_pages","gmb","google-business","google_business","google_business_profile","hashnode","instagram","instagram-standalone","instagram_direct","lemmy","linkedin","linkedin-company","linkedin-page","linkedin_company","linkedin_page","linkedin_personal","mastodon","medium","meta","meta_business","pinterest","reddit","skool","slack","telegram","threads","tiktok","twitter","whop","wordpress","x","x_twitter","youtube"] as const;
746
752
  export const ANALYTICS_PLATFORM_IDS = ["instagram","facebook","linkedin","youtube","pinterest","threads","google_business"] as const;
package/src/index.ts CHANGED
@@ -51,6 +51,7 @@ import { listGoogleBusinessMediaTool } from './tools/list-google-business-media.
51
51
  import { addGoogleBusinessMediaTool } from './tools/add-google-business-media.js';
52
52
  import { deleteGoogleBusinessMediaTool } from './tools/delete-google-business-media.js';
53
53
  import { listActivityTool } from './tools/list-activity.js';
54
+ import { getUpdatesTool } from './tools/get-updates.js';
54
55
  import { listWebhooksTool } from './tools/list-webhooks.js';
55
56
  import { createWebhookTool } from './tools/create-webhook.js';
56
57
  import { updateWebhookTool } from './tools/update-webhook.js';
@@ -1009,6 +1010,20 @@ server.tool(
1009
1010
  }
1010
1011
  );
1011
1012
 
1013
+ server.tool(
1014
+ getUpdatesTool.name,
1015
+ getUpdatesTool.description,
1016
+ getUpdatesTool.inputSchema.shape,
1017
+ async (input) => {
1018
+ try {
1019
+ const text = await getUpdatesTool.execute(client, input as any);
1020
+ return { content: [{ type: 'text' as const, text }] };
1021
+ } catch (err: any) {
1022
+ return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true };
1023
+ }
1024
+ }
1025
+ );
1026
+
1012
1027
  server.tool(
1013
1028
  listWebhooksTool.name,
1014
1029
  listWebhooksTool.description,
@@ -555,6 +555,24 @@ export interface ActivityResponse {
555
555
  limit: number;
556
556
  }
557
557
 
558
+ export interface UpdateEntry {
559
+ slug: string;
560
+ title: string;
561
+ date: string;
562
+ version: string;
563
+ summary: string;
564
+ type: string | null;
565
+ areas: string[];
566
+ url: string;
567
+ image?: string;
568
+ video?: string;
569
+ content?: string;
570
+ }
571
+
572
+ export interface UpdatesResponse {
573
+ updates: UpdateEntry[];
574
+ }
575
+
558
576
  export interface ApiWebhook {
559
577
  id: string;
560
578
  workspace_id: string | null;
@@ -1383,6 +1401,19 @@ export class PosterlyClient {
1383
1401
  return this.request('GET', `/activity${qs ? `?${qs}` : ''}`);
1384
1402
  }
1385
1403
 
1404
+ async getUpdates(params?: {
1405
+ limit?: number;
1406
+ since?: string;
1407
+ include_content?: boolean;
1408
+ }): Promise<UpdatesResponse> {
1409
+ const searchParams = new URLSearchParams();
1410
+ if (params?.limit) searchParams.set('limit', String(params.limit));
1411
+ if (params?.since) searchParams.set('since', params.since);
1412
+ if (params?.include_content) searchParams.set('include_content', 'true');
1413
+ const qs = searchParams.toString();
1414
+ return this.request('GET', `/updates${qs ? `?${qs}` : ''}`);
1415
+ }
1416
+
1386
1417
  async listWebhooks(params?: { workspace_id?: string }): Promise<{ webhooks: ApiWebhook[] }> {
1387
1418
  const searchParams = new URLSearchParams();
1388
1419
  if (params?.workspace_id) searchParams.set('workspace_id', params.workspace_id);
@@ -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.25.0';
8
+ export const POSTERLY_MCP_VERSION = '0.26.0';
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ import type { PosterlyClient } from '../lib/api-client.js';
3
+
4
+ export const getUpdatesTool = {
5
+ name: 'get_updates',
6
+ description:
7
+ 'Get the latest posterly product updates and news from the updates feed: new features, improvements, and fixes. Requires an active posterly subscription.',
8
+ inputSchema: z.object({
9
+ limit: z.number().int().min(1).max(50).optional().describe('Number of updates to return. Default 10, max 50.'),
10
+ since: z.string().optional().describe('ISO date. Return updates published on or after this date.'),
11
+ include_content: z.boolean().optional().describe('Include the full markdown body of each update. Defaults to false.'),
12
+ }),
13
+
14
+ async execute(
15
+ client: PosterlyClient,
16
+ input: {
17
+ limit?: number;
18
+ since?: string;
19
+ include_content?: boolean;
20
+ },
21
+ ) {
22
+ const result = await client.getUpdates(input);
23
+ if (result.updates.length === 0) {
24
+ return 'No posterly updates found.';
25
+ }
26
+
27
+ const lines = [`Latest posterly updates (${result.updates.length}):`];
28
+ for (const update of result.updates) {
29
+ const meta = [update.date, update.version ? `v${update.version}` : null, update.type]
30
+ .filter(Boolean)
31
+ .join(', ');
32
+ lines.push(`- ${update.title} [${meta}]${update.summary ? `: ${update.summary}` : ''}`);
33
+ if (update.url) lines.push(` ${update.url}`);
34
+ if (update.content) {
35
+ lines.push('', update.content.trim(), '');
36
+ }
37
+ }
38
+
39
+ return lines.join('\n');
40
+ },
41
+ };