@omnisocials/mcp-server 1.3.6 → 1.3.7

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
@@ -191,6 +191,11 @@ Full API docs: [docs.omnisocials.com](https://docs.omnisocials.com)
191
191
 
192
192
  ## Changelog
193
193
 
194
+ ### 1.3.7
195
+
196
+ - **Fixed:** `update_post` now accepts per-platform options (`youtube`, `pinterest`, `instagram`, `tiktok`) — same shape as `create_post`. Previously these were missing from the `update_post` schema, so agents that tried to rename a scheduled YouTube Short via `youtube.title` had the field silently stripped before it reached the server. Renaming a Short, changing privacy, adjusting a Pinterest board, etc. on an existing draft now work.
197
+ - Tool descriptions clarify that `content` is the post caption / body, and for YouTube Shorts becomes the video **description** — **not** the Short's title. To rename a Short, use `youtube.title`.
198
+
194
199
  ### 1.3.6
195
200
 
196
201
  - Metadata-only republish of 1.3.5 to refresh the README on npmjs.com. No code changes from 1.3.5.
@@ -378,9 +378,11 @@ Do NOT call without required media — it will fail.`, {
378
378
  });
379
379
  server.tool("update_post", `Update an existing post. Only draft and scheduled posts can be updated.
380
380
 
381
+ **Per-platform options (\`youtube\`, \`pinterest\`, \`instagram\`, \`tiktok\`)** are accepted here, same shape as in \`create_post\`. Pass an object — never a JSON-encoded string. For YouTube Shorts, the **title** lives at \`youtube.title\`; the **video description** lives in \`content\` (or \`content.youtube\` for a per-platform override). They are not the same field — changing the caption does NOT rename the Short.
382
+
381
383
  **X threads**: To convert an existing draft into a chained X thread, pass \`x.thread_parts\` as a 2–25 entry array of \`{ text }\` objects (each ≤ 280 chars). Pass \`null\` to revert to single-tweet mode. Do NOT shove "1/", "2/" into \`content\` — that's a single tweet, not a thread.`, {
382
384
  id: z.string().describe("The post ID to update"),
383
- content: z.union([z.string(), z.record(z.string(), z.string())]).optional().describe("Updated post content. String or object with platform keys: { \"default\": \"fallback\", \"linkedin\": \"long\" }."),
385
+ content: z.union([z.string(), z.record(z.string(), z.string())]).optional().describe("Updated post caption / body text. For YouTube Shorts this becomes the video description, NOT the title — to rename the Short, use `youtube.title`. String or object with platform keys: { \"default\": \"fallback\", \"linkedin\": \"long\" }."),
384
386
  scheduled_at: z.string().optional().describe("Updated scheduled date (ISO 8601)"),
385
387
  channels: z.array(z.string()).optional().describe("Updated channel IDs. Note: `linkedin` (personal profile) and `linkedin_page` (company page) are independent channels."),
386
388
  media_ids: z.union([
@@ -391,6 +393,34 @@ Do NOT call without required media — it will fail.`, {
391
393
  z.array(z.string()),
392
394
  z.record(z.string(), z.array(z.string())),
393
395
  ]).optional().describe("External URLs — flat array or per-platform object. Max 10 total. 'default' key is fallback for platforms without their own key. Empty array opts out."),
396
+ youtube: z.object({
397
+ title: z.string().optional().describe("Short title shown on YouTube. To change the Short's title on an existing draft, set this — do NOT use `content` (which is the description)."),
398
+ tags: z.array(z.string()).optional(),
399
+ privacy_status: z.enum(["public", "private", "unlisted"]).optional(),
400
+ category_id: z.string().optional(),
401
+ made_for_kids: z.boolean().optional(),
402
+ notify_subscribers: z.boolean().optional(),
403
+ contains_synthetic_media: z.boolean().optional(),
404
+ }).optional().describe("YouTube Shorts options. Only applies when type is 'reel' and youtube is among the selected channels."),
405
+ pinterest: z.object({
406
+ board_id: z.string().optional(),
407
+ title: z.string().optional(),
408
+ link: z.string().optional(),
409
+ }).optional().describe("Pinterest-specific options"),
410
+ instagram: z.object({
411
+ share_to_feed: z.boolean().optional(),
412
+ thumbnail_type: z.enum(["from-video", "from-library"]).optional(),
413
+ thumb_offset: z.number().optional(),
414
+ cover_url: z.string().optional(),
415
+ }).optional().describe("Instagram Reel options"),
416
+ tiktok: z.object({
417
+ privacy_level: z.enum(["PUBLIC_TO_EVERYONE", "MUTUAL_FOLLOW_FRIENDS", "FOLLOWER_OF_CREATOR", "SELF_ONLY"]).optional(),
418
+ disable_comment: z.boolean().optional(),
419
+ disable_duet: z.boolean().optional(),
420
+ disable_stitch: z.boolean().optional(),
421
+ is_aigc: z.boolean().optional(),
422
+ brand_content_toggle: z.boolean().optional(),
423
+ }).optional().describe("TikTok options"),
394
424
  x: z.object({
395
425
  reply_settings: z.enum(["", "following", "mentionedUsers"]).optional(),
396
426
  paid_partnership: z.boolean().optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnisocials/mcp-server",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "MCP server for OmniSocials API - manage social media posts, media, accounts, analytics, and webhooks",
5
5
  "type": "module",
6
6
  "main": "build/index.js",