posterly-mcp-server 0.46.0 → 0.47.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
@@ -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.46.0` exposes 62 tools covering 94 actions. The hosted HTTP endpoint exposes the same catalog minus the three signup tools: 59 tools covering 91 actions.
126
+ `posterly-mcp-server@0.47.1` exposes 62 tools covering 95 actions. The hosted HTTP endpoint exposes the same catalog minus the three signup tools: 59 tools covering 92 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
 
@@ -211,13 +211,14 @@ Accounts, posting, media, schedule, analytics, and support. What most assistants
211
211
  | `edit` (default) | Edit caption, media, schedule, or settings |
212
212
  | `status` (pass `status`) | Pause, resume, schedule, or move to draft |
213
213
  | `release_id` (pass `release_id`) | Set a release or group ID |
214
+ | `approval` (pass `approval_action`) | Request, approve, request changes, or reject client review (owner or admin only) |
214
215
 
215
216
  **`delete_post`**: Delete posts
216
217
 
217
218
  | Mode (picked by params) | What it does |
218
219
  | --- | --- |
219
- | `post` (default) | Delete one post |
220
- | `group` (pass `group_id`) | Delete a post group (preview then confirm) |
220
+ | `post` (default) | Delete one post. Published Instagram or Facebook posts also need `confirm_published` |
221
+ | `group` (pass `group_id`) | Delete a post group (preview then confirm). Never deletes published posts |
221
222
 
222
223
  **`upload_media`**: Upload media
223
224
 
@@ -145,6 +145,7 @@ export interface ApiPostApproval {
145
145
  asset_status: ApiPostApprovalStatus;
146
146
  caption_status: ApiPostApprovalStatus;
147
147
  waiting_on: 'client' | 'team' | null;
148
+ pending_client_approval: boolean;
148
149
  requested_at: string | null;
149
150
  completed_at: string | null;
150
151
  }
@@ -193,6 +194,23 @@ export interface InstagramPostSettings {
193
194
  }>;
194
195
  reel_cover_url?: string;
195
196
  reel_thumb_offset?: number;
197
+ is_ai_generated?: boolean;
198
+ audio_id?: string;
199
+ caption_addon?: {
200
+ type?: 'none' | 'poll' | 'comment_prompt';
201
+ kind?: 'none' | 'poll' | 'comment_prompt';
202
+ options?: string[];
203
+ extended_duration?: boolean;
204
+ } | null;
205
+ poll_attachment?: {
206
+ option_a?: string;
207
+ option_b?: string;
208
+ option_c?: string;
209
+ option_d?: string;
210
+ options?: string[];
211
+ };
212
+ is_comment_prompt_used?: boolean;
213
+ is_poll_duration_extended?: boolean;
196
214
  }
197
215
  export type PlatformPostSettings = Record<string, unknown>;
198
216
  export type CreatePostPayload = {
@@ -1212,6 +1230,7 @@ export declare class PosterlyClient {
1212
1230
  offset?: number;
1213
1231
  workspace_id?: string;
1214
1232
  approval_status?: string;
1233
+ approval_waiting_on?: string;
1215
1234
  brand_id?: string;
1216
1235
  }): Promise<{
1217
1236
  posts: Post[];
@@ -1244,10 +1263,18 @@ export declare class PosterlyClient {
1244
1263
  }): Promise<{
1245
1264
  post: Post;
1246
1265
  }>;
1247
- deletePost(id: number): Promise<{
1266
+ deletePost(id: number, options?: {
1267
+ confirmPublished?: boolean;
1268
+ }): Promise<{
1248
1269
  deleted: boolean;
1249
1270
  id: number;
1271
+ platform_delete?: string;
1250
1272
  }>;
1273
+ setPostApproval(id: number, data: {
1274
+ action: 'request' | 'approve' | 'request_changes' | 'reject';
1275
+ axis?: 'asset' | 'caption';
1276
+ note?: string;
1277
+ }): Promise<Record<string, unknown>>;
1251
1278
  updatePostStatus(id: number, data: {
1252
1279
  status: 'scheduled' | 'paused' | 'draft';
1253
1280
  scheduled_at?: string;
@@ -340,6 +340,8 @@ export class PosterlyClient {
340
340
  searchParams.set('workspace_id', params.workspace_id);
341
341
  if (params?.approval_status)
342
342
  searchParams.set('approval_status', params.approval_status);
343
+ if (params?.approval_waiting_on)
344
+ searchParams.set('approval_waiting_on', params.approval_waiting_on);
343
345
  if (params?.brand_id)
344
346
  searchParams.set('brand_id', params.brand_id);
345
347
  const qs = searchParams.toString();
@@ -375,8 +377,16 @@ export class PosterlyClient {
375
377
  async updatePost(id, data) {
376
378
  return this.request('PATCH', `/posts/${id}`, data);
377
379
  }
378
- async deletePost(id) {
379
- return this.request('DELETE', `/posts/${id}`);
380
+ async deletePost(id, options) {
381
+ const qs = options?.confirmPublished ? '?confirm_published=true' : '';
382
+ return this.request('DELETE', `/posts/${id}${qs}`);
383
+ }
384
+ async setPostApproval(id, data) {
385
+ return this.request('POST', `/posts/${id}/approval`, {
386
+ action: data.action,
387
+ ...(data.axis ? { axis: data.axis } : {}),
388
+ ...(data.note ? { note: data.note } : {}),
389
+ });
380
390
  }
381
391
  async updatePostStatus(id, data) {
382
392
  return this.request('PUT', `/posts/${id}/status`, data);
@@ -1 +1 @@
1
- export declare const POSTERLY_MCP_VERSION = "0.46.0";
1
+ export declare const POSTERLY_MCP_VERSION = "0.47.1";
@@ -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.46.0';
8
+ export const POSTERLY_MCP_VERSION = '0.47.1';