Developer Guide

Give Grok Bot the Ability
to Post to X

No, Grok Bot cannot post to X out of the box. Its official X connector, shipped August 29, 2026, only reads. Add a custom MCP connector and Grok can publish, thread, and schedule. About three minutes.

Last updated: September 2026

7-day free trial. Cancel anytime.

Grok Bot has an X connector. Why can it not post?

Because it is a read connector. xAI shipped the X connector for Grok Bot on August 29, 2026, and every capability in the announcement is a read: search posts, read your timeline, check mentions, pull together what is happening on X. Publishing is not in the list, and xAI does not claim it anywhere.

That surprises people, because xAI owns X. It is still true. Grok Bot itself launched on August 11, 2026 with routines that run on a schedule, so you can have a Bot watch X every morning. You just cannot have it say anything back until you give it a tool that writes.

Grok supports Bring Your Own MCP. Any MCP server reachable over the public internet can be added at grok.com/connectors, and Grok auto-discovers its tools. That is the gap this guide closes. The connector you add is the OpenTweet MCP server, which exposes 43 X tools including publishing, threads, and scheduling.

The X connector is read-only

As of August 29, 2026, the built-in X connector searches posts, reads your timeline, and checks mentions. Publishing, threading, and scheduling are not in it. Adding a custom MCP connector is the supported way to add them, not a workaround.

If you want the wider picture first, read can Grok post to X or the code-first version of this setup in post to Twitter from Grok, which covers the xAI API function-calling loop instead of the Grok Bot connector UI.

Step-by-step: add a connector that can write

1

Get an OpenTweet API key

Sign up, connect your X account once, then create an ot_ key at /developer. That single key is the whole credential. OpenTweet holds the X connection, so you never create an X developer app and never enroll in X API billing.

your credential
ot_live_xxxxxxxxxxxxxxxxxxxxxxxx

Sent to the MCP server as:
Authorization: Bearer ot_live_xxxxxxxxxxxxxxxxxxxxxxxx
2

Add OpenTweet as a custom connector in Grok

Open grok.com/connectors, choose New Connector, then Custom. Grok asks for the MCP server URL and for whatever authentication that server requires. The OpenTweet hosted endpoint is a Streamable HTTP server and it authenticates on one bearer header.

connector settings
Name          OpenTweet
Server URL    https://mcp.opentweet.io/mcp
Transport     Streamable HTTP
Auth header   Authorization: Bearer ot_your_key

xAI documents the custom connector flow as entering the server URL and completing any required authentication, and it requires the server to be reachable over the public internet. As of September 2026 the xAI docs do not spell out static header credentials for remote servers, so if your connector screen gives you no field for an Authorization header, use the local path below instead. It ends in exactly the same tools.

fallback: run it locally, then tunnel
OPENTWEET_API_KEY=ot_your_key npx -y @opentweet/mcp-server

# expose it, then paste the tunnel URL into the Custom connector
ngrok http 3000

Why a tunnel is involved at all

Grok connectors call your MCP server from xAI infrastructure, so a server on localhost is not reachable. xAI documents tunneling for exactly this case. The hosted endpoint at mcp.opentweet.io/mcp skips the tunnel entirely when your connector screen accepts a header.
3

Confirm Grok discovered the tools

Grok auto-discovers tools from the server, so the fastest check is to ask it. Do not ask whether the connector is connected, which it will answer from the UI state. Ask for tool names.

ask Grok
Which OpenTweet tools can you call? List them by name.

A working connector names the write tools, including opentweet_create_tweet, opentweet_schedule_tweet, and opentweet_create_thread. The full set is 43 tools, listed in the tool reference. An empty list means the credential never reached the server. See the issues section below.

4

Post, thread, and schedule

From here it is plain language. Grok picks the tool, OpenTweet performs the write against your connected X account, and Grok reports the post ID back.

publish now
Post this to X: shipped the Grok connector today, it took three minutes.
build a thread
Turn my last three release notes into a 4-post thread and publish it to X.
schedule for later
Schedule that thread for tomorrow at 9:00am in my timezone instead of posting now.

Scheduling is the interesting one. The send happens on the OpenTweet side, so the post goes out at 9:00am whether or not Grok is running, and whether or not your Bot has a routine scheduled at that minute.

5

Put it on a Grok Bot routine

Grok Bot routines run on a schedule, which is what makes the read-only connector frustrating in the first place: the Bot can watch X all week and never say anything. Now it can. The pattern worth copying drafts and schedules rather than publishing, so a human still approves.

weekday morning routine
Every weekday at 8:00am:
1. Use the X connector to read my mentions and my timeline from the last 24h.
2. Pick the two threads most worth replying to in public.
3. Draft one standalone post about each.
4. Use OpenTweet to SCHEDULE both for 11:00am. Do not publish immediately.
5. Reply here with the two drafts and their scheduled times.

Read with one connector, write with the other

This is the shape that makes both connectors earn their place. The built-in X connector does the reading it is good at, the OpenTweet connector does the writing it was never given. A routine that schedules instead of publishing leaves you a review window in the OpenTweet dashboard before anything is public.

Why not just let Grok drive the X website?

It is the obvious shortcut and it is the one that quietly costs you the most. A connector either works or returns a status code. Browser automation fails in a third way: it reports success while nothing happened.

Browser automation breaks silently

A layout change, a login challenge, or a rate-limit interstitial turns a working routine into one that clicks the wrong element and tells you it posted. On an unattended morning routine you will not find out for days. There is also the account-safety side: driving a logged-in session with automation is a poor bet for an account you actually care about, and it is the kind of activity platforms act on. A connector calls a documented endpoint with your own key, and when it fails it says 401 or 429 in a place you can read.

What this costs

Three ways to give Grok a write path to X, priced. Your xAI subscription is billed separately in all three.

X API directly

$0.015 per post

About $0.20 per post when the post contains a link. Needs an X developer app and OAuth 2.0. As of April 2026 new developers cannot buy the old Basic or Pro tiers at all, only metered pay-per-use or Enterprise. No scheduling.

XMCP, X's own server

Metered per call

Launched June 30, 2026 at api.x.com/mcp. It can post, but it bills against your X API plan per tool call, user-context writes need the xurl local bridge plus a developer app, and it cannot schedule.

OpenTweet

$11.99 per month

Flat, on the Pro plan. $0 per post, links included. No X developer account. 43 MCP tools with scheduling and threads. One ot_ key in one connector field. See pricing.

More detail on the posting paths lives in post to X over MCP, the MCP docs, and the Grok integration page.

Common issues and fixes

Connector added but no tools appear

Grok discovers tools by calling the server, so a connector that saves without listing tools almost always means the request never got a valid credential. Confirm the key starts with ot_ and is sent as an Authorization Bearer value. The hosted endpoint returns 401 with the message "Missing or invalid Authorization header" when the header is absent, and Grok surfaces that as an empty tool list.

401 Invalid API key. Keys must start with ot_

The key was truncated, quoted, or pasted with the word Bearer included twice. Regenerate it at /developer and paste the raw value. Do not paste the key into a Grok prompt: it belongs in the connector credential field only.

Grok drafts the post but never publishes it

Grok is being cautious, not broken. Say publish explicitly, for example "publish this now to X", rather than "write me a post". If the routine is meant to stay hands-off, do the opposite and tell it to schedule, so a human approves in the OpenTweet dashboard before anything sends.

429 Too Many Requests

The OpenTweet API allows 60 requests per minute. A routine that loops over a long list of drafts can hit that. Batch the work, or have the routine schedule posts across the day instead of firing them in one pass.

Frequently asked questions

Grok Bot has an X connector. Why can it not post?

Because the X connector, shipped August 29, 2026, is a read connector. xAI describes it as searching posts, reading your timeline, checking mentions, and pulling together what is happening on X. Publishing is not among the listed capabilities and xAI does not claim it anywhere. To publish, you add a separate custom MCP connector that exposes a posting tool.

How do I give Grok Bot the ability to publish to X?

Add a custom MCP connector. Go to grok.com/connectors, choose New Connector, then Custom, and point it at https://mcp.opentweet.io/mcp with your OpenTweet ot_ key as the Authorization Bearer credential. Grok auto-discovers the tools from the server and can then publish, thread, and schedule. Setup takes about three minutes.

Can Grok Bot schedule posts to X?

Not on its own. Grok Bot, launched August 11, 2026, runs routines on a schedule, but a routine can only use the tools its connectors give it, and the built-in X connector has no write tools. Once the OpenTweet connector is attached, Grok can call a scheduling tool, and the scheduled send happens on the OpenTweet side even when Grok is not running.

Do I need an X developer account for Grok to post?

No. OpenTweet holds the X connection, so Grok only ever calls OpenTweet with your ot_ key. You never create an X developer app and you never enroll in X API billing. Posting through the X API directly instead needs a developer app, OAuth 2.0, and pay-per-use billing on every write.

How much does it cost to let Grok post to X?

OpenTweet Pro is a flat $11.99 per month and includes the REST API and MCP access with no per-post fee. Your Grok subscription is billed separately by xAI. Posting through the X API directly instead costs about $0.015 per post, and about $0.20 per post when the post contains a link.

Why not just let Grok click through the X website instead?

Browser automation breaks silently. A layout change or a login challenge turns a working routine into one that reports success while nothing posted, and automated session use is a poor fit for an account you care about. A connector fails loudly with a status code you can read, which is what you want on an unattended routine.

Let Grok actually post

Get your ot_ key, add one custom connector, and the Bot that has been reading X all week can publish, thread, and schedule. No X developer account, no per-post fees.

7-day free trial. Cancel anytime.