posterly-mcp-server 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -93,7 +93,7 @@ Add the same server definition to your Cursor MCP settings:
93
93
 
94
94
  ## Available tools
95
95
 
96
- `posterly-mcp-server@0.7.0` exposes 16 tools:
96
+ `posterly-mcp-server@0.8.1` exposes 16 tools:
97
97
 
98
98
  - `whoami`
99
99
  - `list_accounts`
@@ -103,8 +103,8 @@ Add the same server definition to your Cursor MCP settings:
103
103
  - `get_brand_profile`
104
104
  - `list_posts`
105
105
  - `get_post`
106
- - `create_post`
107
- - `update_post`
106
+ - `create_post` (supports `thread_posts: string[]` for X / Threads reply chains, plus `platform_settings` for platform-specific composer controls)
107
+ - `update_post` (also accepts `platform_settings`)
108
108
  - `delete_post`
109
109
  - `upload_media`
110
110
  - `find_available_slot`
@@ -112,6 +112,8 @@ Add the same server definition to your Cursor MCP settings:
112
112
  - `get_account_analytics`
113
113
  - `get_post_analytics`
114
114
 
115
+ Analytics tools currently support Instagram, LinkedIn, Google Business Profile, and Pinterest.
116
+
115
117
  ## What the brand tools are for
116
118
 
117
119
  Posterly workspaces often have multiple connected accounts under one client or brand.
@@ -138,6 +140,9 @@ much more reliable than forcing the agent to guess from raw account handles alon
138
140
  - `Show me the brand profile for Grassroots`
139
141
  - `Find the next 3 posting slots for my LinkedIn account`
140
142
  - `Schedule a post for tomorrow at 9am for the Posterly Instagram account`
143
+ - `Schedule this as an Instagram Story with a first comment and @partner as collaborator`
144
+ - `Schedule this YouTube video as unlisted, add the thumbnail URL, and put it in our launch playlist`
145
+ - `Post this TikTok with direct-post privacy set to public and stitch disabled`
141
146
  - `How did Grassroots perform on Instagram in the last 30 days?`
142
147
 
143
148
  ## Pricing
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ import { getAccountAnalyticsTool } from './tools/get-account-analytics.js';
20
20
  import { getPostAnalyticsTool } from './tools/get-post-analytics.js';
21
21
  const server = new McpServer({
22
22
  name: 'posterly',
23
- version: '0.7.0',
23
+ version: '0.8.0',
24
24
  });
25
25
  let client;
26
26
  try {
@@ -53,7 +53,32 @@ export interface Post {
53
53
  platform_post_url?: string;
54
54
  published_at?: string;
55
55
  workspace_id?: string | null;
56
+ metadata?: Record<string, unknown> | null;
57
+ reel_cover_url?: string | null;
58
+ reel_cover_method?: string | null;
59
+ reel_thumb_offset?: number | null;
56
60
  }
61
+ export interface InstagramPostSettings {
62
+ __type?: 'instagram' | 'instagram-standalone';
63
+ post_type?: 'post' | 'feed' | 'story' | 'reel' | 'carousel';
64
+ is_trial_reel?: boolean;
65
+ graduation_strategy?: 'MANUAL' | 'SS_PERFORMANCE';
66
+ collaborators?: Array<string | {
67
+ label?: string;
68
+ username?: string;
69
+ handle?: string;
70
+ }>;
71
+ user_tags?: Array<string | {
72
+ username?: string;
73
+ label?: string;
74
+ handle?: string;
75
+ }>;
76
+ first_comment?: string;
77
+ media_alt_texts?: Record<string, string>;
78
+ reel_cover_url?: string;
79
+ reel_thumb_offset?: number;
80
+ }
81
+ export type PlatformPostSettings = Record<string, unknown>;
57
82
  export interface Slot {
58
83
  time: string;
59
84
  local_time: string;
@@ -83,6 +108,7 @@ export interface AccountAnalyticsSummary {
83
108
  followers_change: number;
84
109
  total_reach: number | null;
85
110
  total_views: number | null;
111
+ total_profile_views?: number | null;
86
112
  total_accounts_engaged: number | null;
87
113
  total_follows_gained: number;
88
114
  total_follows_lost: number;
@@ -137,6 +163,8 @@ export interface PostAnalyticsRow {
137
163
  shares: number;
138
164
  plays: number;
139
165
  total_interactions: number;
166
+ url_link_clicks?: number;
167
+ user_profile_clicks?: number;
140
168
  media_type: string | null;
141
169
  media_url: string | null;
142
170
  permalink: string | null;
@@ -198,6 +226,10 @@ export declare class PosterlyClient {
198
226
  media_url?: string;
199
227
  media_urls?: string[];
200
228
  metadata?: Record<string, unknown>;
229
+ settings?: PlatformPostSettings;
230
+ reel_cover_url?: string;
231
+ reel_cover_method?: string;
232
+ reel_thumb_offset?: number;
201
233
  workspace_id?: string;
202
234
  }): Promise<{
203
235
  post: Post;
@@ -218,6 +250,10 @@ export declare class PosterlyClient {
218
250
  media_urls?: string[];
219
251
  post_type?: string;
220
252
  metadata?: Record<string, unknown>;
253
+ settings?: PlatformPostSettings;
254
+ reel_cover_url?: string | null;
255
+ reel_cover_method?: string | null;
256
+ reel_thumb_offset?: number | null;
221
257
  }): Promise<{
222
258
  post: Post;
223
259
  }>;