Publish an original post (optionally a self-thread), with media
publishCreate and publish an original post to X with built-in algorithm checks, media upload, and cost tracking. Preview with dry_run to see the full plan without posting.
Instructions
Create an original post on the authenticated account. Runs the algorithm rules first (mentions ≤1, no engagement bait, spacing ≥4h between originals, video strictly >10s and video-only), uploads media via the v2 chunked endpoints (files must live under the allowed media roots: /root/.x-mcp/media), enforces the monthly budget ($0.015/post, $0.2 if the text contains a URL), and records the post so post_performance/account_pulse can track it in algorithm terms (cold-start window, first-favorite → OON corpus, 48h shelf life).
Set dry_run=true to see the full plan without posting. Use thread for follow-up posts chained as replies to your own post (they do NOT get their own For You reach — one post per conversation ships — they are for readers who tap in). Quote posts are Enterprise-only on pay-per-use: use handoff(kind="quote") instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| poll | No | ||
| tags | No | Experiment tags for `insights` (e.g. ["video","receipt","question"]) — how you learn what works. | |
| text | Yes | Post text. ≤280 weighted chars unless the account has long-post access. URLs count as 23. | |
| force | No | Override soft rules (spacing, bait/mention warnings, ≤10s video). Never overrides media roots, the budget or hard API limits. | |
| thread | No | Follow-up posts, each posted as a reply to the previous one (self-thread). | |
| dry_run | No | Analyse and price only; do not upload or post. | |
| idea_id | No | Idea from the `ideas` pipeline this post uses; it is marked used. | |
| alt_text | No | Alt text applied to each uploaded image/video. | |
| media_paths | No | Absolute local paths under an allowed media root: up to 4 images, or exactly 1 video (mp4/mov/webm) or 1 gif. Do not mix video with images. | |
| community_id | No | Post into an X Community you are a member of. | |
| made_with_ai | No | Disclose AI-generated media. | |
| reply_settings | No | Who can reply. Omit for everyone. | |
| long_post_limit | No | Character limit to validate against if the account has long posts (e.g. 25000). Default 280. | |
| share_with_followers | No | With community_id: also show to followers. |