MCPMCP Tools/Posts/update_post

update_post

Writeposts:write

Update an editable post (draft/scheduled/error/active). Reconciles platform submissions. A requested platform with no active connection never fails this call either (same as create_post) and the response is `{ status: "no_connection", missingPlatforms, scope, post: { id, status } }` instead of the usual `{ id, status }`. PLATFORM RULES (enforced — violations rejected): Post types: `announcement` works on every platform; `event` and `offer` are Google-only (any social platform ⇒ must be announcement). Caption char limits: google 1500, facebook 30000, instagram 2200, x 280 (X thread mode is exempt from the 280 limit), linkedin 2000, pinterest 500, mastodon 500, bluesky 300. Media (per platform, using each item's `platform`): facebook ≤10 images OR ≤1 video, no mix (carousel = 2–10 images only, per-card headline ≤80 / description ≤200); instagram requires ≥1 media, ≤10 images OR ≤1 video, no image/video mix; x ≤4 images OR ≤1 video, no mix; linkedin ≤5 images OR ≤1 video, no mix; pinterest image-only, exactly 1, required; mastodon ≤4 images OR ≤1 video, no mix. Google event ⇒ eventTitle (≤58 chars) + eventStartAt + eventEndAt (end after start) required. Google offer ⇒ ctaType + ctaUrl required. scheduledFor must be in the future. Drafts (draft=true) skip required-field checks but still enforce all structural checks above.

Parameters
postIdstringrequired
Post id (from list_posts or get_post).
namestringoptional
Internal post name/label. Required, non-empty, ≤255 characters.
postType"announcement" | "event" | "offer"optional
Post type. `announcement` is supported by all platforms. `event` and `offer` are GOOGLE-ONLY — if any social platform (facebook, instagram, x, linkedin, pinterest, mastodon, bluesky) is selected, postType must be `announcement`.
platforms("google" | "facebook" | "instagram" | "x" | "linkedin" | "pinterest" | "mastodon" | "bluesky" | "threads" | "tiktok")[]optional
Target platforms. Valid values: google, facebook, instagram, x, linkedin, pinterest, mastodon, bluesky. At least one is required; unknown values are rejected. e.g. ["google","facebook","instagram"].
messageGooglestringoptional
Caption for Google. Required when `google` is selected (unless draft). Max 1500 characters.
messageFacebookstringoptional
Shared social caption — used by facebook, instagram, x, linkedin, pinterest, mastodon, bluesky. Required when any of those is selected, unless draft. It is validated against EACH selected platform's character limit: facebook 30000, instagram 2200, x 280 (X thread mode is exempt from the 280 limit), linkedin 2000, pinterest 500, mastodon 500, bluesky 300. The message must fit the smallest limit among the selected social platforms.
ctaType"learn_more" | "sign_up" | "order_online" | "book" | "buy" | "call_now"optional
Call-to-action type. For a Google `offer`, ctaType AND ctaUrl are both required. learn_more/sign_up/order_online/book/buy all require ctaUrl; call_now does not.
ctaUrlstringoptional
Call-to-action URL. Required for a Google offer and for CTA types other than call_now.
mediaUrlsobject[]optional
Media items, one entry per platform attachment: [{ "url", "platform", "type": "image"|"video" }]. The `platform` on each item must be one of the target platforms and controls which per-platform media rules apply. Per-platform limits (violations are rejected): google = no media constraints enforced here; facebook = ≤10 images OR ≤1 video, no mix (carousel: 2–10 image cards, images only); instagram = requires ≥1 item, ≤10 images OR ≤1 video, images and video cannot be mixed; x = ≤4 images OR ≤1 video, no mix; linkedin = ≤5 images OR ≤1 video, no mix; pinterest = image only (no video), exactly 1 image, required; mastodon = ≤4 images OR ≤1 video, no mix.
urlstringoptional
Publicly reachable media URL (http/https).
platform"google" | "facebook" | "instagram" | "x" | "linkedin" | "pinterest" | "mastodon" | "bluesky"optional
Which target platform this media attaches to.
type"image" | "video"optional
Media kind.
eventTitlestringoptional
Event/offer title. For a Google event or offer this is required (unless draft) and must be ≤58 characters.
eventStartAtstringoptional
Event/offer start (ISO timestamp). Required for Google event/offer posts (unless draft).
eventEndAtstringoptional
Event/offer end (ISO timestamp). Required for Google event/offer posts (unless draft); must be after the start.
offerTermsstringoptional
Offer terms (offer posts).
offerCouponCodestringoptional
Offer coupon code.
offerRedeemUrlstringoptional
Offer redemption URL.
scheduledForstringoptional
Schedule for this ISO timestamp (must be in the future; omit to publish now).
draftbooleanoptional
Save as draft without publishing. Drafts skip publish-gating 'required' checks (required message, required media, required event/offer fields) but STILL enforce structural checks: character limits, media counts, media mixing, valid enums, carousel bounds, and date ordering.
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_post",
    "arguments": {
      "postId": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.