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 +3 -2
- package/dist/generated/platform-manifest.d.ts +24 -24
- package/dist/generated/platform-manifest.js +30 -24
- package/dist/index.js +10 -0
- package/dist/lib/api-client.d.ts +21 -0
- package/dist/lib/api-client.js +11 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/tools/create-connect-session.d.ts +2 -2
- package/dist/tools/create-post.d.ts +9 -9
- package/dist/tools/create-posts-batch.d.ts +5 -5
- package/dist/tools/get-connect-link.d.ts +2 -2
- package/dist/tools/get-platform-schema.d.ts +2 -2
- package/dist/tools/get-updates.d.ts +24 -0
- package/dist/tools/get-updates.js +29 -0
- package/dist/tools/list-posts.d.ts +3 -3
- package/dist/tools/trigger-platform-helper.d.ts +3 -3
- package/package.json +1 -1
- package/src/generated/platform-manifest.ts +30 -24
- package/src/index.ts +15 -0
- package/src/lib/api-client.ts +31 -0
- package/src/lib/version.ts +1 -1
- package/src/tools/get-updates.ts +41 -0
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.
|
|
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
|
|
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", "
|
|
5
|
-
readonly allPlatformIds: readonly ["instagram", "facebook", "tiktok", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business", "telegram", "bluesky", "discord", "mastodon", "devto", "hashnode", "wordpress", "lemmy", "reddit", "medium", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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);
|
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -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<{
|
package/dist/lib/api-client.js
CHANGED
|
@@ -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)
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const POSTERLY_MCP_VERSION = "0.
|
|
1
|
+
export declare const POSTERLY_MCP_VERSION = "0.26.0";
|
package/dist/lib/version.js
CHANGED
|
@@ -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.
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
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.
|
|
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","
|
|
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","
|
|
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","
|
|
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,
|
package/src/lib/api-client.ts
CHANGED
|
@@ -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);
|
package/src/lib/version.ts
CHANGED
|
@@ -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.
|
|
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
|
+
};
|