posterly-mcp-server 0.49.0 → 0.49.2

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
@@ -123,7 +123,7 @@ Add the same server definition to your Cursor MCP settings:
123
123
 
124
124
  ## Available tools
125
125
 
126
- `posterly-mcp-server@0.49.0` exposes 64 tools covering 100 actions. The hosted HTTP endpoint exposes the same catalog minus the three signup tools: 61 tools covering 97 actions.
126
+ `posterly-mcp-server@0.49.2` exposes 64 tools covering 100 actions. The hosted HTTP endpoint exposes the same catalog minus the three signup tools: 61 tools covering 97 actions.
127
127
 
128
128
  Many tools pick what to do with one parameter: `view` (reads), `action` (writes), or `type`. A few pick their mode from which parameters you pass (for example `update_post` with `status` changes the status instead of editing). Every tool description names all of its views and actions.
129
129
 
@@ -395,7 +395,7 @@ Pre-auth signup for brand-new users. Local npm package only; always on.
395
395
 
396
396
  > Google Business tip: pass `account_id` (the integer `id` from `list_accounts`) to every Google Business 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 `list_google_business_reviews` with `view: "review_link"` returns. Passing the Place ID resolves to no account and returns "Google Business Profile account not found".
397
397
 
398
- Analytics (`list_analytics`) currently supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads.
398
+ Analytics (`list_analytics`) currently supports Instagram, X, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads.
399
399
 
400
400
  ## Renamed tools
401
401
 
@@ -34,7 +34,7 @@ export declare const PLATFORM_MANIFEST: {
34
34
  readonly youtube: "youtube";
35
35
  };
36
36
  readonly helperNames: readonly ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
37
- readonly analyticsPlatformIds: readonly ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
37
+ readonly analyticsPlatformIds: readonly ["instagram", "facebook", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business"];
38
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: {
@@ -104,7 +104,7 @@ export declare const PLATFORM_MANIFEST: {
104
104
  readonly status: "supported";
105
105
  readonly aliases: readonly ["x"];
106
106
  readonly postTypes: readonly ["text", "image", "video", "carousel", "x_thread"];
107
- readonly analyticsSupported: false;
107
+ readonly analyticsSupported: true;
108
108
  readonly helpers: readonly ["x.quota"];
109
109
  }, {
110
110
  readonly id: "linkedin";
@@ -405,4 +405,4 @@ export declare const ALL_PLATFORM_INPUTS: readonly ["bluesky", "devto", "discord
405
405
  export declare const PLATFORM_HELPER_NAMES: readonly ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
406
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
- export declare const ANALYTICS_PLATFORM_IDS: readonly ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
408
+ export declare const ANALYTICS_PLATFORM_IDS: readonly ["instagram", "facebook", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business"];
@@ -142,6 +142,7 @@ export const PLATFORM_MANIFEST = {
142
142
  "analyticsPlatformIds": [
143
143
  "instagram",
144
144
  "facebook",
145
+ "twitter",
145
146
  "linkedin",
146
147
  "youtube",
147
148
  "pinterest",
@@ -315,7 +316,7 @@ export const PLATFORM_MANIFEST = {
315
316
  "carousel",
316
317
  "x_thread"
317
318
  ],
318
- "analyticsSupported": false,
319
+ "analyticsSupported": true,
319
320
  "helpers": [
320
321
  "x.quota"
321
322
  ]
@@ -749,4 +750,4 @@ export const ALL_PLATFORM_INPUTS = ["bluesky", "devto", "discord", "facebook", "
749
750
  export const PLATFORM_HELPER_NAMES = ["linkedin.recent_mentions", "pinterest.boards", "tiktok.creator_info", "x.quota"];
750
751
  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"];
751
752
  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"];
752
- export const ANALYTICS_PLATFORM_IDS = ["instagram", "facebook", "linkedin", "youtube", "pinterest", "threads", "google_business"];
753
+ export const ANALYTICS_PLATFORM_IDS = ["instagram", "facebook", "twitter", "linkedin", "youtube", "pinterest", "threads", "google_business"];
@@ -1449,7 +1449,7 @@ export declare class PosterlyClient {
1449
1449
  variations?: number;
1450
1450
  provider?: 'google' | 'xai';
1451
1451
  model?: 'lite' | 'flash' | 'pro';
1452
- resolution?: '512' | '1K' | '2K' | '4K';
1452
+ resolution?: '1K' | '2K' | '4K';
1453
1453
  quality?: 'low' | 'medium' | 'high';
1454
1454
  thinking_level?: 'minimal' | 'high';
1455
1455
  reference_image_urls?: string[];
@@ -1 +1 @@
1
- export declare const POSTERLY_MCP_VERSION = "0.49.0";
1
+ export declare const POSTERLY_MCP_VERSION = "0.49.2";
@@ -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.49.0';
8
+ export const POSTERLY_MCP_VERSION = '0.49.2';
@@ -10,7 +10,7 @@ export declare const generateImageTool: {
10
10
  variations: z.ZodOptional<z.ZodNumber>;
11
11
  provider: z.ZodOptional<z.ZodEnum<["google", "xai"]>>;
12
12
  model: z.ZodOptional<z.ZodEnum<["lite", "flash", "pro"]>>;
13
- resolution: z.ZodOptional<z.ZodEnum<["512", "1K", "2K", "4K"]>>;
13
+ resolution: z.ZodOptional<z.ZodEnum<["1K", "2K", "4K"]>>;
14
14
  quality: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
15
15
  thinking_level: z.ZodOptional<z.ZodEnum<["minimal", "high"]>>;
16
16
  reference_image_urls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -22,7 +22,7 @@ export declare const generateImageTool: {
22
22
  workspace_id?: string | undefined;
23
23
  provider?: "google" | "xai" | undefined;
24
24
  aspect_ratio?: "1:1" | "16:9" | "9:16" | "4:3" | "3:4" | "3:2" | "2:3" | "4:5" | "1:4" | "1:8" | "21:9" | "4:1" | "8:1" | "5:4" | undefined;
25
- resolution?: "512" | "1K" | "2K" | "4K" | undefined;
25
+ resolution?: "1K" | "2K" | "4K" | undefined;
26
26
  model?: "pro" | "lite" | "flash" | undefined;
27
27
  style?: "minimal" | "professional" | "photographic" | "illustration" | "vibrant" | "youtube_thumbnail" | "reel_cover" | "review_background" | undefined;
28
28
  variations?: number | undefined;
@@ -35,7 +35,7 @@ export declare const generateImageTool: {
35
35
  workspace_id?: string | undefined;
36
36
  provider?: "google" | "xai" | undefined;
37
37
  aspect_ratio?: "1:1" | "16:9" | "9:16" | "4:3" | "3:4" | "3:2" | "2:3" | "4:5" | "1:4" | "1:8" | "21:9" | "4:1" | "8:1" | "5:4" | undefined;
38
- resolution?: "512" | "1K" | "2K" | "4K" | undefined;
38
+ resolution?: "1K" | "2K" | "4K" | undefined;
39
39
  model?: "pro" | "lite" | "flash" | undefined;
40
40
  style?: "minimal" | "professional" | "photographic" | "illustration" | "vibrant" | "youtube_thumbnail" | "reel_cover" | "review_background" | undefined;
41
41
  variations?: number | undefined;
@@ -50,7 +50,7 @@ export declare const generateImageTool: {
50
50
  variations?: number;
51
51
  provider?: "google" | "xai";
52
52
  model?: "lite" | "flash" | "pro";
53
- resolution?: "512" | "1K" | "2K" | "4K";
53
+ resolution?: "1K" | "2K" | "4K";
54
54
  quality?: "low" | "medium" | "high";
55
55
  thinking_level?: "minimal" | "high";
56
56
  reference_image_urls?: string[];
@@ -44,11 +44,11 @@ export const generateImageTool = {
44
44
  model: z
45
45
  .enum(['lite', 'flash', 'pro'])
46
46
  .optional()
47
- .describe('Google-only. lite (8 credits, 1K only) suits drafts; flash (default, 15 at 1K) balances quality and cost; pro (30 at 1K) is highest quality. Ignored for xAI.'),
47
+ .describe('Google-only. lite (8 credits, 1K only) suits drafts; flash (default, Nano Banana 2.1, 15 at 1K) balances quality and cost; pro (30 at 1K) is highest quality. Ignored for xAI.'),
48
48
  resolution: z
49
- .enum(['512', '1K', '2K', '4K'])
49
+ .enum(['1K', '2K', '4K'])
50
50
  .optional()
51
- .describe('Output resolution. Default 1K. xAI supports 1K/2K only. Google flash: 10/15/23/35 credits at 512/1K/2K/4K; pro: 30 at 1K-2K, 55 at 4K.'),
51
+ .describe('Output resolution. Default 1K. xAI supports 1K/2K only. Google flash (Nano Banana 2.1): 15/23/35 credits at 1K/2K/4K. 512 is no longer available. Pro: 30 at 1K-2K, 55 at 4K.'),
52
52
  quality: z
53
53
  .enum(['low', 'medium', 'high'])
54
54
  .optional()
@@ -4,7 +4,7 @@ import { validateArgs } from '../lib/tool-runtime.js';
4
4
  const presentationSchema = z.enum(['compact', 'table', 'json']).optional();
5
5
  export const listAnalyticsTool = {
6
6
  name: 'list_analytics',
7
- description: 'Analytics for connected social accounts (Instagram, Facebook, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads). view=accounts (account_id): daily snapshots and a period summary with platform-native display_metrics labels. Google Business Profile account analytics includes Calls, Website clicks, and Directions along with Profile Views, Search Views, Maps Views, Customer Actions, and Posts. view=posts (account_id): per-post likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays, clicks, and watch time, most recent first, with limit/offset. view=insights: per-post feedback insights with a performance tier (great/good/mixed/poor), diagnosis, next action, and baseline, filtered by account_id, post_id, or checkpoint (1h, 6h, 24h, 72h, 7d); read-only, Pro plan or higher. presentation (accounts and posts): compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.',
7
+ description: 'Analytics for connected social accounts (Instagram, X, Facebook, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads). view=accounts (account_id): daily snapshots and a period summary with platform-native display_metrics labels. Google Business Profile account analytics includes Calls, Website clicks, and Directions along with Profile Views, Search Views, Maps Views, Customer Actions, and Posts. view=posts (account_id): per-post likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays, clicks, and watch time, most recent first, with limit/offset. view=insights: per-post feedback insights with a performance tier (great/good/mixed/poor), diagnosis, next action, and baseline, filtered by account_id, post_id, or checkpoint (1h, 6h, 24h, 72h, 7d); read-only, Pro plan or higher. presentation (accounts and posts): compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.',
8
8
  inputSchema: z.object({
9
9
  view: z.enum(['accounts', 'posts', 'insights']).describe('accounts, posts, or insights.'),
10
10
  account_id: z
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "posterly-mcp-server",
3
- "version": "0.49.0",
3
+ "version": "0.49.2",
4
4
  "mcpName": "io.github.awpthorp/posterly",
5
5
  "description": "MCP server for posterly: schedule and publish social media posts across 18 platforms from any MCP client (Claude, ChatGPT, Cursor, Windsurf, Cline, and more)",
6
6
  "license": "MIT",
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.awpthorp/posterly",
4
4
  "title": "posterly",
5
5
  "description": "Validate, schedule, publish, and analyze social content across 18 platforms with posterly.",
6
- "version": "0.49.0",
6
+ "version": "0.49.2",
7
7
  "websiteUrl": "https://www.poster.ly/mcp",
8
8
  "repository": {
9
9
  "url": "https://github.com/awpthorp/posterly",
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "registryType": "npm",
16
16
  "identifier": "posterly-mcp-server",
17
- "version": "0.49.0",
17
+ "version": "0.49.2",
18
18
  "transport": {
19
19
  "type": "stdio"
20
20
  },
@@ -142,6 +142,7 @@ export const PLATFORM_MANIFEST = {
142
142
  "analyticsPlatformIds": [
143
143
  "instagram",
144
144
  "facebook",
145
+ "twitter",
145
146
  "linkedin",
146
147
  "youtube",
147
148
  "pinterest",
@@ -315,7 +316,7 @@ export const PLATFORM_MANIFEST = {
315
316
  "carousel",
316
317
  "x_thread"
317
318
  ],
318
- "analyticsSupported": false,
319
+ "analyticsSupported": true,
319
320
  "helpers": [
320
321
  "x.quota"
321
322
  ]
@@ -749,4 +750,4 @@ export const ALL_PLATFORM_INPUTS = ["bluesky","devto","discord","facebook","gmb"
749
750
  export const PLATFORM_HELPER_NAMES = ["linkedin.recent_mentions","pinterest.boards","tiktok.creator_info","x.quota"] as const;
750
751
  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;
751
752
  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;
752
- export const ANALYTICS_PLATFORM_IDS = ["instagram","facebook","linkedin","youtube","pinterest","threads","google_business"] as const;
753
+ export const ANALYTICS_PLATFORM_IDS = ["instagram","facebook","twitter","linkedin","youtube","pinterest","threads","google_business"] as const;
@@ -1858,7 +1858,7 @@ export class PosterlyClient {
1858
1858
  variations?: number;
1859
1859
  provider?: 'google' | 'xai';
1860
1860
  model?: 'lite' | 'flash' | 'pro';
1861
- resolution?: '512' | '1K' | '2K' | '4K';
1861
+ resolution?: '1K' | '2K' | '4K';
1862
1862
  quality?: 'low' | 'medium' | 'high';
1863
1863
  thinking_level?: 'minimal' | 'high';
1864
1864
  reference_image_urls?: string[];
@@ -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.49.0';
8
+ export const POSTERLY_MCP_VERSION = '0.49.2';
@@ -47,11 +47,11 @@ export const generateImageTool = {
47
47
  model: z
48
48
  .enum(['lite', 'flash', 'pro'])
49
49
  .optional()
50
- .describe('Google-only. lite (8 credits, 1K only) suits drafts; flash (default, 15 at 1K) balances quality and cost; pro (30 at 1K) is highest quality. Ignored for xAI.'),
50
+ .describe('Google-only. lite (8 credits, 1K only) suits drafts; flash (default, Nano Banana 2.1, 15 at 1K) balances quality and cost; pro (30 at 1K) is highest quality. Ignored for xAI.'),
51
51
  resolution: z
52
- .enum(['512', '1K', '2K', '4K'])
52
+ .enum(['1K', '2K', '4K'])
53
53
  .optional()
54
- .describe('Output resolution. Default 1K. xAI supports 1K/2K only. Google flash: 10/15/23/35 credits at 512/1K/2K/4K; pro: 30 at 1K-2K, 55 at 4K.'),
54
+ .describe('Output resolution. Default 1K. xAI supports 1K/2K only. Google flash (Nano Banana 2.1): 15/23/35 credits at 1K/2K/4K. 512 is no longer available. Pro: 30 at 1K-2K, 55 at 4K.'),
55
55
  quality: z
56
56
  .enum(['low', 'medium', 'high'])
57
57
  .optional()
@@ -78,7 +78,7 @@ export const generateImageTool = {
78
78
  variations?: number;
79
79
  provider?: 'google' | 'xai';
80
80
  model?: 'lite' | 'flash' | 'pro';
81
- resolution?: '512' | '1K' | '2K' | '4K';
81
+ resolution?: '1K' | '2K' | '4K';
82
82
  quality?: 'low' | 'medium' | 'high';
83
83
  thinking_level?: 'minimal' | 'high';
84
84
  reference_image_urls?: string[];
@@ -29,7 +29,7 @@ type ListAnalyticsInput = {
29
29
  export const listAnalyticsTool = {
30
30
  name: 'list_analytics',
31
31
  description:
32
- 'Analytics for connected social accounts (Instagram, Facebook, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads). view=accounts (account_id): daily snapshots and a period summary with platform-native display_metrics labels. Google Business Profile account analytics includes Calls, Website clicks, and Directions along with Profile Views, Search Views, Maps Views, Customer Actions, and Posts. view=posts (account_id): per-post likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays, clicks, and watch time, most recent first, with limit/offset. view=insights: per-post feedback insights with a performance tier (great/good/mixed/poor), diagnosis, next action, and baseline, filtered by account_id, post_id, or checkpoint (1h, 6h, 24h, 72h, 7d); read-only, Pro plan or higher. presentation (accounts and posts): compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.',
32
+ 'Analytics for connected social accounts (Instagram, X, Facebook, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads). view=accounts (account_id): daily snapshots and a period summary with platform-native display_metrics labels. Google Business Profile account analytics includes Calls, Website clicks, and Directions along with Profile Views, Search Views, Maps Views, Customer Actions, and Posts. view=posts (account_id): per-post likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays, clicks, and watch time, most recent first, with limit/offset. view=insights: per-post feedback insights with a performance tier (great/good/mixed/poor), diagnosis, next action, and baseline, filtered by account_id, post_id, or checkpoint (1h, 6h, 24h, 72h, 7d); read-only, Pro plan or higher. presentation (accounts and posts): compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.',
33
33
  inputSchema: z.object({
34
34
  view: z.enum(['accounts', 'posts', 'insights']).describe('accounts, posts, or insights.'),
35
35
  account_id: z