MCP (streamable HTTP, custom connector) · X

Post to X from ChatGPT without handing over the keys

ChatGPT is good at the messy early part of writing for X: ten angles on one idea, a sharper hook, a shorter version. The weak point has always been the copy-paste step, and the fear of a connector that posts on its own. Adding SocialHandoff as a custom connector gives ChatGPT the draft_post and schedule_post tools while keeping the approval step with you. It can brainstorm, pick the best version, and queue it, and the tweet still waits for your tap.

Prompt

I want to post about why we stopped doing weekly all-hands. Give me 5 different hooks for X, each under 200 characters. Then take the second one, expand it into a single tweet that ends with a question, and draft it for X for tomorrow at 12:30 Europe/Berlin.

How to do it

  1. Enable developer mode In ChatGPT settings, turn on developer mode so you can add a custom connector for a remote MCP server.
  2. Add the connector Create a connector pointing at https://app.socialhandoff.com/mcp and supply your agent key as the bearer token. Scope that key to X in Connections first.
  3. Brainstorm, then commit Ask for several variations in plain chat. Only when you pick one does ChatGPT call draft_post, which keeps the inbox free of rejected ideas.
  4. Schedule the slot ChatGPT calls schedule_post with the date, time, and timezone. The post stays pending until approval.
  5. Approve Open the inbox or the installable phone app and approve, edit, or request changes.

Example draft

We cancelled our weekly all-hands 6 months ago. Nobody asked for it back. What replaced it: a written Monday note and one open Q&A a month. What is the meeting your team would not miss?

Gotchas

  • ChatGPT sometimes counts characters the simple way. X uses weighted counting, where emoji and CJK characters can count double and links count 23, so trust the character count in the preview card over the model's estimate.
  • Custom connectors run in developer mode. If the connector disappears from a new chat, check that developer mode is still on and the connector is enabled for that conversation.
  • Brainstorm variations in chat, not as drafts. Every draft_post call creates an inbox item, and ten near-identical drafts make review slower.
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

Can ChatGPT approve its own tweet?
No. approve_post is limited to owner keys, and an agent key cannot approve a draft it wrote. You approve in the inbox.
Does this work with a self-hosted server?
Yes, as long as ChatGPT can reach your /mcp endpoint over HTTPS. Point the connector at your own origin instead of https://app.socialhandoff.com.

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