Give your OpenClaw agent iHatePosting and it can draft, check and schedule posts across 14 networks as part of its work — once one line of its config is right.
How do I connect iHatePosting to OpenClaw?
It takes about a minute. Nothing here needs a download, and the only thing you carry between the two apps is a key you can revoke whenever you like.
- 1Step 1
Create an iHatePosting API key
Sign in, open Settings → Developers and create a key. It starts with pk_live_, and the same page can show it again whenever you need it.
- 2Step 2
Add iHatePosting to OpenClaw
Add to ~/.openclaw/openclaw.json on the machine that runs the OpenClaw Gateway. The file is JSON5, so comments and trailing commas are fine. Replace YOUR_API_KEY with your key.
OpenClaw — connector{ "mcp": { "servers": { "ihateposting": { "url": "https://ihateposting.com/mcp?client=openclaw", "transport": "streamable-http", "enabled": true, "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } } - 3Step 3
Ask it to post
Tell OpenClaw what you want to say and where. It saves a draft in iHatePosting unless you ask for the post to go out now or at a set time.
What is different about OpenClaw
Every client reaches the same server, and then behaves like itself. These are the things that are true here and not somewhere else.
The transport line is not optional. OpenClaw treats a bare url as an SSE server by default, and ours serves only Streamable HTTP — without transport set to streamable-http the server never connects, and nothing in the config says why.
The block nests under mcp, then servers — not a bare mcpServers root.
openclaw.json is JSON5, so comments and trailing commas are fine, and the Gateway reloads the file as soon as you save it.
OpenClaw expands environment variables in headers, but one that is not set is sent literally, so writing the key is the reliable choice.
From the command line (OpenClaw 2026.6.1 or later), openclaw mcp add ihateposting --url https://ihateposting.com/mcp --transport streamable-http --header "Authorization=Bearer YOUR_API_KEY" writes the same entry, so use it instead of editing the file, not as well: it refuses a name that already exists. Note the = between the header name and value. It connects before saving, but our server answers without a valid key, so that proves the address, not the key; ask your agent to run whoami for that. openclaw mcp doctor ihateposting --probe checks it later, and warns that the header holds a literal secret, which is expected when the key is written in.
Limits. Streamable HTTP needs OpenClaw 2026.3.31 or later. Adding a server from Settings or the composer needs administrator access, and its quick form has no header field: add the Authorization header in the config editor on the same Settings page, or the server connects but every tool says there is no API key.
OpenClaw's own documentation: OpenClaw MCP
Nothing goes out unless you say so
Every post OpenClaw writes is saved as a draft in iHatePosting unless you ask for it to be published now or at a set time. Publishing, rescheduling, retrying and deleting are marked as actions that change things, so clients that honour those markings ask you before they run them. Deleting a post in iHatePosting never removes one that is already live on a network.
What is the iHatePosting MCP?
MCP — the Model Context Protocol — is the standard way an assistant plugs into an app it does not own. Our server exposes the accounts you have connected to OpenClaw as tools, so it can draft, check and schedule without you opening a dashboard.
How OpenClaw uses it
- You add the connector once — by signing in, or with a key you create
- OpenClaw reads which accounts you have connected, and each network's rules
- It writes a version per network and checks it against those rules before sending
- It saves a draft, schedules it, or publishes — exactly as your message said
- It works alongside whatever other tools OpenClaw already has
# reads — nothing changes
whoami list_accounts
list_posts get_post
get_platform_rules get_analytics
list_media list_pinterest_boards
# writes — marked as changing things,
# so you are asked first
create_post update_post
validate_post reschedule_post
retry_post delete_post
upload_mediaCost, access and what to do when it breaks
What does it cost?
The connector costs nothing on top of iHatePosting. New accounts get a 90-day free trial with no credit card, and every network on this page is included in it. Paid plans are coming — you will be told what changes before it does.
How is access secured?
Either you sign in to iHatePosting and approve access, or you create an API key in Settings → Developers. That page can show your key again whenever you need it. Whichever route you take, it reaches only the accounts you have already connected, and you can revoke it at any time without touching the accounts themselves.
Something not working?
- It cannot see any accounts: connect them in iHatePosting first, then ask it to list them again.
- You regenerated your key and it still fails: Regenerate revokes the old key the moment you press it, and a client that is already running keeps sending the old one until you genuinely restart it.
- A post failed: open it in iHatePosting — the failure names the network and repeats what that network actually said.
Frequently asked questions
Why does OpenClaw never connect to iHatePosting?
The transport line is missing. OpenClaw treats a bare url as an SSE server by default, and ours serves only Streamable HTTP, so set transport to streamable-http. Streamable HTTP needs OpenClaw 2026.3.31 or later.
Where does the block go in openclaw.json?
Under mcp, then servers, not a bare mcpServers root. The file is JSON5, so comments and trailing commas are fine, and the Gateway reloads it as soon as you save.
Is there a command instead of editing the file?
Yes, on OpenClaw 2026.6.1 or later: openclaw mcp add with --url, --transport streamable-http and the Authorization header writes the same entry. It proves the address, not the key, so ask your agent to run whoami afterwards.
One connection reaches every network
Connect your accounts in iHatePosting once. From then on OpenClaw can post to any of them, and we publish at the time you set — even after you close the chat.
- Bluesky
- X
- Threads
- TikTok
- YouTube
- Mastodon
- Telegram
- Discord
- Tumblr
- Slack
Ready to post everywhere from OpenClaw?
Start your 90-day free trial — no credit card, about a minute to your first post.
Sign Up