@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 +5 -0
- package/build/tools/posts.js +31 -1
- package/package.json +1 -1
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.
|
package/build/tools/posts.js
CHANGED
|
@@ -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
|
|
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