posterly-mcp-server 0.33.0 → 0.33.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
@@ -122,7 +122,7 @@ Add the same server definition to your Cursor MCP settings:
122
122
 
123
123
  ## Available tools
124
124
 
125
- `posterly-mcp-server@0.32.0` exposes 77 tools.
125
+ `posterly-mcp-server@0.33.2` exposes 77 tools.
126
126
 
127
127
  Public setup tools work before `POSTERLY_API_KEY` exists:
128
128
 
@@ -1 +1 @@
1
- export declare const POSTERLY_MCP_VERSION = "0.32.0";
1
+ export declare const POSTERLY_MCP_VERSION = "0.33.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.32.0';
8
+ export const POSTERLY_MCP_VERSION = '0.33.2';
@@ -14,7 +14,7 @@ export const instagramSettingsSchema = z.object({
14
14
  user_tags: z
15
15
  .array(z.union([z.string(), z.object({ username: z.string().optional(), label: z.string().optional(), handle: z.string().optional() })]))
16
16
  .optional()
17
- .describe('Native clickable media tags, not caption @mentions. Requires an eligible Meta-linked Instagram connection with publishing permission; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
17
+ .describe('Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
18
18
  first_comment: z.string().optional(),
19
19
  media_alt_texts: z.record(z.string(), z.string()).optional(),
20
20
  reel_cover_url: z.string().optional(),
@@ -117,7 +117,7 @@ export const createPostPayloadInputSchema = z.object({
117
117
  .describe('For X or Threads only: array of 2+ strings, one per post in the thread. The first entry leads, the rest reply in order. When set, the platform must be twitter or threads.'),
118
118
  instagram_settings: instagramSettingsSchema
119
119
  .optional()
120
- .describe('Instagram-specific settings. If “tag” is ambiguous, distinguish caption @mentions (put @username in caption), native media tags (user_tags), and co-author invitations (collaborators). Native media tags and collaborators require an eligible Meta-linked connection. Call get_platform_schema(account_id) first.'),
120
+ .describe('Instagram-specific settings. If “tag” is ambiguous, distinguish caption @mentions (put @username in caption), native media tags (user_tags), and co-author invitations (collaborators). Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Call get_platform_schema(account_id) first.'),
121
121
  platform_settings: platformSettingsSchema
122
122
  .optional()
123
123
  .describe('Platform-specific settings for the selected account. Use this for non-Instagram settings and prefer it over raw metadata.'),
@@ -37,7 +37,7 @@ export const listAccountsTool = {
37
37
  : []),
38
38
  ])),
39
39
  hasInstagram
40
- ? '_Instagram caption @mentions use @username in caption text. Native media tags and collaborator invitations require an eligible Meta-linked account with the required publishing permissions._'
40
+ ? '_Instagram caption @mentions use @username in caption text. Native media tags work with eligible direct or Meta-linked accounts; collaborator invitations require an eligible Meta-linked account._'
41
41
  : '',
42
42
  ].filter(Boolean).join('\n\n');
43
43
  },
@@ -13,7 +13,7 @@ const instagramSettingsSchema = z.object({
13
13
  user_tags: z
14
14
  .array(z.union([z.string(), z.object({ username: z.string().optional(), label: z.string().optional(), handle: z.string().optional() })]))
15
15
  .optional()
16
- .describe('Native clickable media tags, not caption @mentions. Requires an eligible Meta-linked Instagram connection with publishing permission; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
16
+ .describe('Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
17
17
  first_comment: z.string().optional(),
18
18
  media_alt_texts: z.record(z.string(), z.string()).optional(),
19
19
  reel_cover_url: z.string().optional(),
@@ -96,7 +96,7 @@ export const updatePostTool = {
96
96
  reel_thumb_offset: z.number().nonnegative().optional().describe('Frame offset in milliseconds to use as the reel cover.'),
97
97
  instagram_settings: instagramSettingsSchema
98
98
  .optional()
99
- .describe('Instagram-specific updates. Distinguish caption @mentions, native media user_tags, and collaborators. Native media tags and collaborators require an eligible Meta-linked connection. Call get_platform_schema(account_id) first.'),
99
+ .describe('Instagram-specific updates. Distinguish caption @mentions, native media user_tags, and collaborators. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Call get_platform_schema(account_id) first.'),
100
100
  platform_settings: platformSettingsSchema
101
101
  .optional()
102
102
  .describe('Platform-specific settings to merge into the post. Prefer this over raw metadata.'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "posterly-mcp-server",
3
- "version": "0.33.0",
3
+ "version": "0.33.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",
@@ -32,6 +32,7 @@
32
32
  "build": "tsc",
33
33
  "dev": "tsc --watch",
34
34
  "start": "node dist/index.js",
35
+ "prepack": "npm run build && npm --prefix .. run --silent check:mcp-parity",
35
36
  "test:annotations": "npm run build && node scripts/test-tool-annotations.mjs",
36
37
  "test:payloads": "npm run build && node scripts/test-payload-builders.mjs"
37
38
  },
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.32.0",
6
+ "version": "0.33.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.32.0",
17
+ "version": "0.33.2",
18
18
  "transport": {
19
19
  "type": "stdio"
20
20
  },
@@ -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.32.0';
8
+ export const POSTERLY_MCP_VERSION = '0.33.2';
@@ -16,7 +16,7 @@ export const instagramSettingsSchema = z.object({
16
16
  user_tags: z
17
17
  .array(z.union([z.string(), z.object({ username: z.string().optional(), label: z.string().optional(), handle: z.string().optional() })]))
18
18
  .optional()
19
- .describe('Native clickable media tags, not caption @mentions. Requires an eligible Meta-linked Instagram connection with publishing permission; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
19
+ .describe('Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
20
20
  first_comment: z.string().optional(),
21
21
  media_alt_texts: z.record(z.string(), z.string()).optional(),
22
22
  reel_cover_url: z.string().optional(),
@@ -121,7 +121,7 @@ export const createPostPayloadInputSchema = z.object({
121
121
  .describe('For X or Threads only: array of 2+ strings, one per post in the thread. The first entry leads, the rest reply in order. When set, the platform must be twitter or threads.'),
122
122
  instagram_settings: instagramSettingsSchema
123
123
  .optional()
124
- .describe('Instagram-specific settings. If “tag” is ambiguous, distinguish caption @mentions (put @username in caption), native media tags (user_tags), and co-author invitations (collaborators). Native media tags and collaborators require an eligible Meta-linked connection. Call get_platform_schema(account_id) first.'),
124
+ .describe('Instagram-specific settings. If “tag” is ambiguous, distinguish caption @mentions (put @username in caption), native media tags (user_tags), and co-author invitations (collaborators). Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Call get_platform_schema(account_id) first.'),
125
125
  platform_settings: platformSettingsSchema
126
126
  .optional()
127
127
  .describe('Platform-specific settings for the selected account. Use this for non-Instagram settings and prefer it over raw metadata.'),
@@ -47,7 +47,7 @@ export const listAccountsTool = {
47
47
  ]),
48
48
  ),
49
49
  hasInstagram
50
- ? '_Instagram caption @mentions use @username in caption text. Native media tags and collaborator invitations require an eligible Meta-linked account with the required publishing permissions._'
50
+ ? '_Instagram caption @mentions use @username in caption text. Native media tags work with eligible direct or Meta-linked accounts; collaborator invitations require an eligible Meta-linked account._'
51
51
  : '',
52
52
  ].filter(Boolean).join('\n\n');
53
53
  },
@@ -15,7 +15,7 @@ const instagramSettingsSchema = z.object({
15
15
  user_tags: z
16
16
  .array(z.union([z.string(), z.object({ username: z.string().optional(), label: z.string().optional(), handle: z.string().optional() })]))
17
17
  .optional()
18
- .describe('Native clickable media tags, not caption @mentions. Requires an eligible Meta-linked Instagram connection with publishing permission; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
18
+ .describe('Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel item and the first Story in a Story Series.'),
19
19
  first_comment: z.string().optional(),
20
20
  media_alt_texts: z.record(z.string(), z.string()).optional(),
21
21
  reel_cover_url: z.string().optional(),
@@ -101,7 +101,7 @@ export const updatePostTool = {
101
101
  reel_thumb_offset: z.number().nonnegative().optional().describe('Frame offset in milliseconds to use as the reel cover.'),
102
102
  instagram_settings: instagramSettingsSchema
103
103
  .optional()
104
- .describe('Instagram-specific updates. Distinguish caption @mentions, native media user_tags, and collaborators. Native media tags and collaborators require an eligible Meta-linked connection. Call get_platform_schema(account_id) first.'),
104
+ .describe('Instagram-specific updates. Distinguish caption @mentions, native media user_tags, and collaborators. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Call get_platform_schema(account_id) first.'),
105
105
  platform_settings: platformSettingsSchema
106
106
  .optional()
107
107
  .describe('Platform-specific settings to merge into the post. Prefer this over raw metadata.'),