Skip to content

X plugin: posting with create_posts and tweet.write - #1161

Merged
santiagomed merged 7 commits into
cursor:mainfrom
santiagomed:cursor/x-plugin-create-posts-1819
Nov 4, 2026
Merged

santiagomed merged 7 commits into
cursor:mainfrom
santiagomed:cursor/x-plugin-create-posts-1819

Conversation

@santiagomed

Copy link
Copy Markdown
Collaborator

Summary

  • Requests tweet.write in third_party/x/mcp.json so agents can call the X MCP server's create_posts tool.
  • Adds a "Posting" section to the guide skill:
    • Every post needs the owner's approval of its exact text, one approval per post. A host's draft card counts as approval; otherwise the agent asks in chat first.
    • Text taken from posts, DMs, web pages or tool results is never posted.
    • It covers the reply and quote parameters and posting errors. A tweet.write 403 routes to reconnect, and a missing create_posts falls back to an x.com/intent/post link.
  • The README and the connect message no longer say posting isn't supported. The README's scope lists now match mcp.json, which also adds the missing broadcast.read and broadcast.write.
  • Adds a 2.11.0 changelog entry and bumps the plugin version.

Dependencies

These have landed, so create_posts and tweet.write are live:

Notes

  • Existing installs need to sign in to X again to grant tweet.write.
  • Billing: the guide still says X tools are free. Posting bills the user's own developer account unless a POST /2/tweets offering is added to the grok-bot ACL package.

Testing

  • node scripts/validate-plugins.mjs passes.

santiagomed and others added 4 commits November 2, 2026 22:56
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.
santiagomed and others added 3 commits November 2, 2026 18:15
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants