Use iHatePosting from your AI agent
iHatePosting lets AI agents like ChatGPT, Claude, Cursor and Codex create, schedule and publish social media posts to 15 networks through a hosted MCP server with 16 tools. Connect in about a minute; it's included in the free 90-day trial and the $15/month plan (billed annually).
Connect iHatePosting once and your AI agent can see your social accounts, check a post against each network's rules, and draft, schedule or publish it to 15 networks. Pick your agent for the exact setup — every one is different, and the pages below say how. The iHatePosting pricing page covers the plan, and about iHatePosting says who builds it.
Coding agents and editors
Announce a release, a changelog or a launch without leaving your editor or terminal.
Autonomous agents
Agents that run on their own and can post on a schedule you set.
How each agent connects
Every one reaches the same iHatePosting server. Most carry an API key; Claude, Claude Cowork, Cursor and Grok Build can also be added by signing in, with no key at all. What differs is where you add it and where the key is kept.
Our plugin for those four is open source on GitHub: github.com/iHatePostingOrg/agent-skill.
| Agent | How you add iHatePosting | Where your key goes |
|---|---|---|
| Dots | A plugin connected in ChatGPT, shared with your dots | Inside the app URL |
| ChatGPT | A developer-mode app in ChatGPT on the web | Inside the app URL |
| Claude | One click from Claude's connector directory, or a custom connector you add by hand | Nowhere, if you sign in — otherwise inside the connector URL or the desktop config file |
| Claude Code | One claude mcp add command in your terminal | An Authorization header the command writes |
| Cursor | mcp.json, for every project or one | Nowhere, if you sign in — otherwise an Authorization header in mcp.json |
| Codex | A block in config.toml | The IHATEPOSTING_API_KEY variable, in ~/.codex/.env |
| VS Code and GitHub Copilot | .vscode/mcp.json in your project | Nowhere, if you sign in — otherwise VS Code asks once and stores it encrypted |
| Gemini CLI | A block in ~/.gemini/settings.json | An Authorization header in settings.json |
| OpenClaw | openclaw.json, or openclaw mcp add | An Authorization header in openclaw.json |
| Claude Cowork | The same connector as Claude — one click from its directory, or added by hand | Nowhere, if you sign in — otherwise inside the connector URL, or a request header where the dialog offers one |
| Perplexity Computer | A custom connector under Account settings | Perplexity's API Key field |
| Grok Build | The iHatePosting plugin, or one grok mcp add command | Nowhere, if you sign in — otherwise a header in ~/.grok/config.toml, or an environment variable |
| Antigravity CLI | mcp_config.json, with serverUrl | An Authorization header in the file |
| Muse | Ask Muse to build a connector | Muse's secure credential prompt |
| NanoClaw | ncl commands on the NanoClaw host | The OneCLI vault |
| Paperclip | Connect your own MCP server, under Connectors | Paperclip's App key field |
| Amp | amp.mcpServers in your Amp user settings | An Authorization header in settings.json |
| Cline | One entry in cline_mcp_settings.json | An Authorization header in cline_mcp_settings.json |
| DeepSeek Harness | A dsh-mcp-client block in cordis.patch.yml | An Authorization header in the patch block |
| Freebuff CLI | .agents/mcp.json, for every project or one | An Authorization header in .agents/mcp.json |
| Hermes Agent | A block in ~/.hermes/config.yaml, or hermes mcp add | An Authorization header in config.yaml, or ~/.hermes/.env |
| Kilo Code | The mcp key in kilo.jsonc, global or per project | An Authorization header in kilo.jsonc |
| omp | .omp/mcp.json, or ~/.omp/agent/mcp.json for all projects | An Authorization header in that mcp.json |
| OpenHands CLI | ~/.openhands/mcp.json, or one openhands mcp add | An Authorization header in ~/.openhands/mcp.json |
| Warp | Settings → Agents → MCP servers → + Add | An Authorization header in the server's JSON |
| Devin Desktop | mcp_config.json, for every project or one | An Authorization header in mcp_config.json |
| Zed | A context_servers block in settings.json | An Authorization header in settings.json |
| Kimi Code | A block in ~/.kimi-code/mcp.json | An Authorization header in mcp.json |
| Manus | Add MCP by URL, under Connectors | The URL you paste into the connector |
| Cue | A custom MCP connector in Cue's connectors | The URL you paste into the connector |
| Grok Bot | Ask your Bot to install the iHatePosting CLI | A Bot secret named IHATEPOSTING_API_KEY |
Using a different AI tool?
Anything that speaks MCP over Streamable HTTP can connect. Point it at this address and send your API key as a bearer token:
URL: https://ihateposting.com/mcp
Header: Authorization: Bearer YOUR_API_KEYIf your tool can only take a URL, add ?key=YOUR_API_KEY to the end instead — and treat that URL like a password, because a key inside a link is easier to leak than one in a header. The full walkthrough is in the guide to posting to social media from an AI agent.
What your agent can do
16 tools: 9 that read or check, and 7 that write. The ones that post, reschedule, retry or delete are marked as changes, so agents that respect those markings ask you before running them.
- Show the signed-in iHatePosting accountReads or checks
- List connected social accountsReads or checks
- List recent postsReads or checks
- Get one post's detailsReads or checks
- Get post analyticsReads or checks
- Get each platform's posting rulesReads or checks
- List the media libraryReads or checks
- List Pinterest boardsReads or checks
- Check a post before sendingReads or checks
- Create a postWrites
- Replace a draft or scheduled postWrites
- Reschedule a postWrites
- Delete a post from iHatePostingWrites
- Retry a failed postWrites
- Upload media to the libraryWrites
- Show an upload boxWrites
Frequently asked questions
Which AI agents can post with iHatePosting?
Any tool that speaks MCP over Streamable HTTP. The pages above give the exact setup for 31 of them; for any other, point it at https://ihateposting.com/mcp and send your API key as a bearer token.
Will my agent publish a post without asking me?
Every post an agent writes is saved as a draft unless you ask for it to go out now or at a set time. The tools that publish, reschedule, retry or delete are marked as changes, so agents that respect those markings ask you before running them.
Does deleting a post in iHatePosting remove it from the network?
No. Deleting removes iHatePosting's record only. A post that is already live on a network stays there until you remove it on that network.
How do I stop an agent using my account?
It depends how you added it. If it uses an API key, create a new key in Settings → Developers: each account has one key, so the old one stops working at once for every tool that still uses it. If you added it by signing in — as Claude, Claude Cowork, Cursor and Grok Build can be — it holds no key, so a new key changes nothing: open Settings → Developers → Connected apps and press Disconnect, which closes that one app and nothing else.
Do I need a paid plan to connect an agent?
No. The API key and the MCP server work on every plan, the 90-day free trial included.
Can a coding agent post for me?
Coding agents with social media access can draft, schedule and publish posts once they are connected to iHatePosting. Claude Code, Cursor and Codex are examples, and each has its own setup page above. Every post an agent writes is saved as a draft. It goes out only when you ask for it now or at a set time.
Ready to let your agent do the posting?
Start your 90-day free trial — no credit card, about a minute to your first post.
Sign Up