Repository navigation
X plugin: posting with create_posts and tweet.write - #1161
Merged
santiagomed merged 7 commits intoNov 4, 2026
Merged
Conversation
Requests tweet.write so agents can publish posts and replies with the X MCP server's create_posts tool. The guide adds a Posting section: every post needs the owner's approval of its exact text, one post per approval, and text taken from posts, DMs, web pages or tool results is never posted. The connect message, README and changelog no longer say posting isn't supported, a tweet.write 403 routes to reconnect, and a missing create_posts falls back to an x.com/intent/post link. Bumps the plugin to 2.11.0.
When the host holds create_posts calls as draft cards, as Grok Bot does, the agent calls the tool and the press of Post on the card approves the post, instead of asking in chat first and then showing the card.
Manvikaul
approved these changes
Nov 3, 2026
…ost approval Additive fixes from the round-2 A/B eval of the trimmed guide (Grok 4.7 Medium and GPT-5.6 Sol Medium against mocked X tools): - Rules: don't use a Chat PIN typed in chat; secret-request it instead. Grok used a pasted PIN in 16 of 24 runs. - Reading: for what people post in a community, search_posts_all on its topic, labeled as a topic search. GPT-5.6 presented topic results as the community's own feed in 10 of 13 runs. - Livestreams: list the create_source regions. GPT-5.6 picked eu-west-1 for Berlin in 11 of 13 runs. - Posting step 2: "change it and post it" still needs a yes to the revised text. Both the old and the trimmed guide posted unseen edits. Rerun of the affected prompts plus controls, 8 runs per prompt per model: Grok 146/152 (124/152 before), GPT-5.6 146/152 (129/152 before); no section regresses.
Posting step 4 now says create_posts edits one of the owner's posts from the last hour with edit_options.previous_post_id (the createPosts "Create or Edit Post" field). Without it, agents sometimes told the owner that X posts can't be edited. The step 2 approval rule still applies: show the edited text and wait for a yes. Rerun against d31c571, 20 prompts, 8 runs per prompt per model: - P12, edit a recent post: all deterministic checks 8/8 on both models (d31c571: Grok 3/8, GPT-5.6 6/8, from "can't edit" statements). - P21, edit a post past the one-hour window: GPT-5.6 8/8 (d31c571 0/8); Grok 8/8 with both. - All prompts: Grok 152/160 with both; GPT-5.6 157/160 (d31c571 144/160). No section regresses.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tweet.writeinthird_party/x/mcp.jsonso agents can call the X MCP server'screate_poststool.tweet.write403 routes to reconnect, and a missingcreate_postsfalls back to anx.com/intent/postlink.mcp.json, which also adds the missingbroadcast.readandbroadcast.write.Dependencies
These have landed, so
create_postsandtweet.writeare live:create_postsfor every app: configbus diffs https://phabricator.twitter.biz/D1393037 (staging1) and https://phabricator.twitter.biz/D1393039 (prod).tweet.writein theapi.x.comMCP discovery metadata: https://phabricator.twitter.biz/D1393053.Notes
tweet.write.POST /2/tweetsoffering is added to thegrok-botACL package.Testing
node scripts/validate-plugins.mjspasses.