MCPMCP Tools/Posts/publish_post_now

publish_post_now

Writeposts:write

Publish an EXISTING POST now: force-submit a draft/errored post (retries pending/errored platform submissions). To publish an idea use publish_post_idea instead. Throws if the post is scheduled for a future time — cancel or wait for the schedule instead. A no-op (no error, nothing retried) if there's nothing pending or errored to retry. Never re-sends a destination whose earlier publish outcome is unknown (it may already be live): those are listed in the result's `held` (reason `outcome_unknown`). Do not report a held destination as published or retried. To send a held destination again you MUST first have a person check that exact destination on the network and explicitly tell you it is not there; then pass `confirmUncertain` (each held submission's id with its `lastAttemptAt` exactly as get_post's `performance` shows it) and `contentVersion` (get_post's value). Only those destinations are sent. Never infer the confirmation, reuse an old one, or retry it automatically; if the post, its destinations or the attempt changed since, it is refused and nothing is sent.

Parameters
postIdstringrequired
Post id. Accepts the database ID or public post- ID. IDs must belong to the authenticated agency and permitted client.
confirmUncertainobject[]optional
Only after a person checked these exact destinations on the network and said they are not there: each held submission with the attempt they checked. Omit for a normal publish.
idstringoptional
Submission id (get_post performance[].submissionId).
attemptAtoptional
That submission's lastAttemptAt exactly as get_post returned it (null when it had none).
contentVersionstringoptional
get_post's contentVersion for the post the person reviewed. Required with confirmUncertain.
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "publish_post_now",
    "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.