MELLOW HUB · FIELD NOTES

Post to X (Twitter) from Claude or ChatGPT with an MCP server

X’s hosted MCP server can read but not post. Publish and schedule posts to X from Claude, ChatGPT or Cursor through Mellow Hub, without an X developer account.

By Mellow · Updated

Can Claude or ChatGPT post to X?

Yes, through Mellow Hub’s remote MCP server at https://www.mellow.world/mcp, without an X developer account of your own. X’s hosted MCP server reads posts, users and trends but cannot create an ordinary post, and its self-hosted server posts only through an X developer app you pay for per request. With Hub, after you connect your X account and approve the access, the assistant checks a post with validate_post, publishes or schedules it with create_post and reads the result and link with get_post. Text alone is fine; a post can also carry up to four images, one video or a poll.

Status: Hub has published to X five times between September 5 and October 1, 2026, each with a public link. On September 29 a Claude Code session posted a video to X together with five other networks through Hub’s production MCP endpoint, and on October 1 a post created about 20 hours earlier went out at its set time, with nothing changed in between. What was tested.

Is there an official X MCP server?

X runs three. The hosted server at api.x.com/mcp, live since June 30, 2026, covers search, users, timelines, bookmarks, trends and Articles, and cannot create ordinary posts. xmcp, which you host yourself, turns every endpoint of the X API into a tool, posting included, using your own X developer app. The third, X Ads MCP, is for advertising. X API access is sold as pay-per-use credits: creating a post costs $0.015, or $0.20 when it contains a link, billed to whoever owns the app.

ServerWhat it doesHow it gets access
X hosted MCP (api.x.com/mcp)Search, users, timelines, bookmarks, trends, Articles. No ordinary posts.Your own X developer app, through xurl OAuth
xmcpEvery X API endpoint as a tool, including creating posts.Your own app’s keys; you pay X per request
EnesCinr/twitter-mcpPosts and searches.Your own X API keys
Mellow HubPosts, schedules and polls to X, with eight other networks in one request.X login through Hub; no developer account; OAuth consent or a Hub key

Read on 1 October 2026 from each project’s own page. Descriptions of other servers are their own claims; Mellow has not tested them.

Servers that log in with your account’s cookies to read or post break X’s terms, which forbid scraping. Since February 23, 2026, X also accepts an automated reply only when the author of the original post mentioned or quoted the replying account.

What X account do I need?

Any X account you can sign in to; Hub posts through its provider’s X app, so you need no developer account and no API credits of your own. When you connect, Hub asks for the OAuth version: OAuth 2.0 is the default. OAuth 1.0a exists for apps still on the older credentials.

  1. Open Accounts in Hub and choose X, or ask the assistant to call connect_channel with platform set to x. That tool only returns a link and an instruction for a person. It needs the channels:connect permission.
  2. Open the link and sign in to X yourself. Hub never sees your X password.
  3. Tell the assistant you are done. It calls list_channels with refresh: true and uses the returned channel ID, which begins with spc_. A username is not a substitute for that ID.

Connect Claude, ChatGPT, Cursor or another MCP client

Every client uses the same server URL, https://www.mellow.world/mcp, over Streamable HTTP. A client signs in with OAuth 2.1 (dynamic client registration and PKCE) or sends an owner-created Hub API key as a Bearer token. Menus change between client versions, so the official guides linked below describe the current screens. The last column says only what Mellow itself has tested, on any network.

ClientHow to add HubTested by Mellow
ClaudeOn any plan, Free included: Customize → Connectors → + Add → Add custom connector. Name it Mellow Hub and paste the URL; if Claude asks how to identify itself, choose Register automatically. There is no client secret to copy. Step by step: the Claude guide.In production on September 29 and 30, 2026: sign-in and consent, starting channel connections, moving a scheduled post’s time (the post then went out at that time on seven networks) and creating a post.
ChatGPTOn the web, on Business, Enterprise or Edu where developer mode is allowed: Settings → Apps → Create, with the URL and OAuth. Pro connects MCP apps for reading only. Step by step: the ChatGPT guide.On October 2, 2026, as a developer-mode app with a test account: it published a post to Bluesky, scheduled another that went out on its own the next morning, and was refused a text over Bluesky’s limit before anything was sent.
Claude Codeclaude mcp add --transport http mellow https://www.mellow.world/mcp, then sign in when Claude Code asks, or send a Hub key as a Bearer header.On September 29, 2026, with an owner-created key, it sent one video to Instagram, Facebook, Threads, LinkedIn, X and TikTok in a single post through the production endpoint. All but TikTok went public with links.
CursorAdd Mellow Hub as a remote HTTP MCP server with the URL, then complete sign-in. Cursor’s MCP documentation.Not tested.
Your own clientStreamable HTTP. Start OAuth discovery from the first 401 response, or send a Hub key in the Authorization: Bearer header.The official MCP Python SDK completed registration, consent and a publication to Instagram and Threads in production on September 20, 2026.
  1. Add the server in your client and select Connect. Sign in to Mellow if asked. Hub’s consent screen names the app that is asking.
  2. Choose the permissions the task needs (below), select your X channel, choose review or autopilot, a daily ceiling and an expiry, then approve.
  3. Back in the client, run the read-only check from the prompts below. Confirm the profile, the mode and the X channel ID. Agents shows the grant’s permissions, channels and expiry.
  4. If a client cannot complete OAuth, create a key in Agents and set it as the client’s Authorization: Bearer header, from its secret settings or an environment variable. Never paste a key into a chat.

Which permissions to approve

PermissionWhat it allows
channels:readRead the profile, the mode and the channels the grant covers: whoami, list_channels.
posts:readCheck and preview a post and read results: validate_post, preview_post, get_post, list_posts.
media:writeRegister a public media URL or request a signed upload URL.
posts:write and posts:publishCreate, schedule or publish a post; both are needed, even in review mode. posts:write also covers cancelling and rescheduling.
channels:connectStart a channel connection and return its link for a person.
metrics:readRead network-reported metrics for published posts.

The consent screen arrives with every permission the assistant asked for already ticked, except spending AI credits. Untick anything it should not have.

What you delegate, and how to take it back

Hub treats an assistant’s access as a delegation you give once, with limits: the permissions, the channels (the ones you select, or explicitly all), review or autopilot, a daily ceiling of 1 to 1,000 posts (50 by default) and an expiry of 1, 7 or 30 days (30 by default). Autopilot is the default: the assistant publishes on its own within those limits. Choose review and each post waits for you to approve it in Hub. A key or a connected app cannot approve its own post.

Hub records the posts an assistant creates or has refused, approvals, reschedules, cancellations and connection attempts in a journal you read in Agents. Revoking a key or a connected app takes effect on its next request. Publishing always needs an idempotency key, so a retried request cannot publish twice.

X rules Hub checks before anything is sent

This table is generated from the registry that validate_post enforces, the same one behind the rules for every network. These are Hub’s input rules; X still judges the media itself when it fetches it.

RuleX in Hub
TextUp to 280 characters. 280 is the limit for a standard account, counted the way X counts: a link is 23 however long it is, and an emoji or a Chinese, Japanese or Korean character is 2. A premium account may write far more, but Mellow cannot see the account's tier, so anything longer is reported rather than silently sent.
TitleNone.
MediaOptional, up to 4 images or videos. Up to four images, or one video. Text on its own is fine.
PlacementNone.
Also supportedScheduling with scheduledAt, several media items in one post, polls, metrics for published posts (get_metrics).

280 is the limit for a standard account, counted the way X counts: a link is 23 however long it is, and an emoji or a Chinese, Japanese or Korean character is 2. A premium account may write far more, but Mellow cannot see the account's tier, so anything longer is reported rather than silently sent.

Hub counts an X post the way X does, by weight: every link is 23 however long it is, and an emoji or a Chinese, Japanese or Korean character is 2. A post Hub accepts is one a standard account can publish; over 280, give X its own caption in perChannel. The free character counter shows the same count as you type.

A poll goes in options.x.poll with two to four options and a duration of 5 to 10,080 minutes.

When validate_post refuses the post

Read ok, issues and notes in the result. The check publishes nothing and reports every problem at once, each with its field and, for a network rule, its channel. Fix them together and validate again.

Issue codeWhat it meansWhat to change
caption_too_longOver 280 as X weighs a post. In a post that also goes to LinkedIn or Instagram, often only X fails.Give X its own caption in perChannel.
media_too_manyMore than 4 images.Keep four, or split into two posts.
media_kinds_mixedImages and a video in one post.One video, or up to four images.
value_invalidA poll with fewer than two or more than four options, or an out-of-range duration.Two to four options, 5 to 10,080 minutes.

Other refusals concern the request or the grant: schedule_in_past (use a future time with a UTC offset), insufficient_scope (approve a delegation with the missing permission), channel_out_of_scope (the channel is not in the grant), and at creation daily_limit_reached and idempotency_key_reused. A passing check is not proof of publication: X can still refuse the media or the account. The free post checker runs the same input rules on a draft before you connect anything.

Prompts you can paste

Replace the bracketed parts. Each prompt names the tools to call, so the assistant does not have to guess the order.

Check the connection, read-only

Use only Mellow Hub. Call whoami, then list_channels, then list_platforms.
Tell me my X channel ID, whether this connection is in review or autopilot
mode, how many posts it may still create today, and X's rules. Do not
create anything.

The same announcement to LinkedIn and X, each its own length

Use Mellow Hub. Announce [what] on my LinkedIn and X channels.
LinkedIn: [the full version]
X: a version of 280 characters or fewer, same point, no hashtags.

Put each caption in perChannel under its channel ID. Validate, fix every
issue, then create_post once with idempotencyKey "launch-[short-name]-1"
and get_post. Report each target's status and link.

A poll, scheduled

Use Mellow Hub. Schedule a poll on my X channel for [time] on [date] in
[your timezone]: question "[question]", options [A], [B], [C],
running for 1440 minutes (options.x.poll). Write scheduledAt with an
explicit UTC offset. Validate, then create_post once with idempotencyKey
"poll-[date]", then get_post.

Media has to be reachable at a public https URL when X fetches it. An agent that can make HTTP requests, such as Claude Code or a script of your own, can instead call request_upload_url, send a local file with PUT to the returned uploadUrl and use the returned mediaUrl. An assistant that only has Hub’s tools cannot send file bytes itself.

Publish once, then read the X result

create_post is the step that publishes or schedules. It needs an idempotencyKey of 8 to 120 letters, digits or the characters . _ : -, stable for this post. If the response is lost or times out, send the same request with the same key: Hub returns the original post instead of making a second one. Reusing a key for different content is refused.

Under a review-mode grant the post comes back as pending_review and waits until you approve it, signed in, in Hub. Under autopilot it goes out at scheduledAt, or immediately without it. Always write scheduledAt with Z or an explicit UTC offset.

Then call get_post and read the X entry in targets, not only the post’s status. publishing means X has not reported a result yet; published comes with the post’s link; failed comes with the network’s message. In a post to several networks each target settles on its own and the post can end partial: republish only the failed channel, with a new key. Once X has published a post, Hub cannot edit or delete it; cancel_post works only before it goes out.

Each destination counts once against your plan: one post to X and two other networks is three publications. Validating, drafting and connecting work without a plan; publishing needs an active one. See plans.

What Mellow has tested with X

Production records on 1 October 2026 show five X publications through Hub between September 5 and October 1, each reaching published with a public link, all on one account. Two came through Hub’s MCP endpoint from a Claude Code session using an owner-created key: a video on September 29, posted together with Instagram, Facebook, Threads, LinkedIn and TikTok, and on September 30 a post that had been scheduled the evening before and went out at its set time, after Claude’s claude.ai connector had moved that time. On October 1 a post created with an owner-created key on September 30 at 15:59 UTC for 12:30 UTC went out at 12:31 UTC, together with Facebook, Instagram, LinkedIn, Pinterest and Threads, with nothing changed in between.

Not tested yet: polls, posts with four images, and connecting through ChatGPT or Cursor.

Questions

Is there an official X MCP server?

Yes, three: a hosted server at api.x.com/mcp that reads but cannot create ordinary posts, the self-hosted xmcp that can post through your own paid X developer app, and an ads server. Mellow Hub posts to X without a developer account of your own.

Do I pay X for posts made through Mellow Hub?

No. Hub posts through its provider’s X app, and your Hub plan counts each post as one publication. Running xmcp or your own script instead means your own developer app, billed by X per request.

Can Claude post a thread on X?

Not as a thread. Hub publishes single posts, with text, media or a poll; it does not chain replies.

Can I post longer than 280 characters with X Premium?

X Premium allows long posts, but Hub cannot see an account’s subscription, so it reports anything over 280 rather than sending it.

Related

Write to Hub's founder

Every message is read by the founder himself, so you are talking to him directly. Questions, bugs, a feature you miss: write about anything. We are glad to keep making Hub better.

What is it about?

We attach this page's address so we can see what you saw.