MCP (streamable HTTP) · X

Claude Code writes the X thread, you approve it

Claude Code already has the context an announcement needs: the commits, the diff, the changelog you just edited. Asking it to write the X thread from that context produces posts that say what actually changed, with the right version number and no invented features. With SocialHandoff connected over MCP, the draft goes to your approval inbox instead of straight to X, so the terminal session that shipped the code can also queue the announcement without the risk of an unreviewed tweet.

Prompt

Read CHANGELOG.md and the commits since the v2.3.0 tag. Draft a 4-tweet X thread announcing v2.4.0 for developers: lead with the one change people will notice, then two smaller fixes, then the upgrade command. Link the release notes in the last tweet only. Queue it with draft_post and do not schedule it.

How to do it

  1. Create a scoped key In https://app.socialhandoff.com > Connections, create a key for Claude Code limited to X with the draft permission only. Keep it in your shell as SOCIALHANDOFF_KEY rather than in the repo.
  2. Register the MCP server Run claude mcp add social -- npx -y socialhandoff-mcp --url https://app.socialhandoff.com --key "$SOCIALHANDOFF_KEY" for stdio, or add https://app.socialhandoff.com/mcp as an HTTP server with an Authorization: Bearer header.
  3. Point Claude at the source Ask it to read the changelog and git log first. Claude Code can run git commands, so the thread is built from real commit messages rather than memory.
  4. Let it call draft_post Claude passes body for tweet 1 and a thread array for the rest, with networks set to x. The tool returns the post id and status pending.
  5. Approve from the inbox Review the thread in the inbox, fix any wording inline, and approve. Use the 60-second undo window if you publish now and spot a typo.

Example draft

1/ v2.4.0 is out. The CLI now resumes interrupted uploads instead of starting over, so a flaky connection costs you seconds, not the whole run.

2/ Also fixed: config files with a BOM no longer fail to parse, and --dry-run now prints the exact requests it would send.

3/ Windows paths with spaces work in every command. Thanks to the 3 people who filed that one with a repro.

4/ Upgrade with npm i -g our-cli@2.4.0. Full notes: https://example.com/releases/v2.4.0

Gotchas

  • Links count as 23 characters on X whatever their length, so a long release URL is fine, but two links in one tweet eat 46 characters. Keep links to the last tweet.
  • Claude Code may paste code blocks or backticks from the changelog. X renders them as plain characters, so ask for prose, not markdown.
  • A key with only the draft permission cannot call schedule_post. That is a good default for a coding agent; add schedule later if you want it to pick slots.
  • X allows up to 4 media per tweet. Claude Code can reference a screenshot path, but attach and describe images with alt text in the inbox before approving.
X
  • Character limit: 280 weighted characters for standard accounts. Most CJK characters and many emoji count as 2. Premium accounts can post longer, but SocialHandoff checks against 280.
  • Links: Every URL is wrapped by t.co and counts as 23 characters, whatever its real length.
  • Media per post: Up to 4 images, or 1 GIF, or 1 video.
  • File sizes: Images up to 5 MB, GIFs up to 15 MB, video up to 512 MB (uploaded in chunks).
Schedule tweets and X threads with a human approval step

Frequently asked questions

Will Claude Code tweet on every commit?
Only when you ask it to draft. Nothing publishes without approval unless you promote the key on the trust ladder, and guardrails like per-account daily limits still apply.
Can I keep the key out of my repo?
Yes. Pass it through an environment variable when you register the server. The raw key is only shown once when you mint it.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial