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.

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.

AgentHow you add iHatePostingWhere your key goes
DotsA plugin connected in ChatGPT, shared with your dotsInside the app URL
ChatGPTA developer-mode app in ChatGPT on the webInside the app URL
ClaudeOne click from Claude's connector directory, or a custom connector you add by handNowhere, if you sign in — otherwise inside the connector URL or the desktop config file
Claude CodeOne claude mcp add command in your terminalAn Authorization header the command writes
Cursormcp.json, for every project or oneNowhere, if you sign in — otherwise an Authorization header in mcp.json
CodexA block in config.tomlThe IHATEPOSTING_API_KEY variable, in ~/.codex/.env
VS Code and GitHub Copilot.vscode/mcp.json in your projectNowhere, if you sign in — otherwise VS Code asks once and stores it encrypted
Gemini CLIA block in ~/.gemini/settings.jsonAn Authorization header in settings.json
OpenClawopenclaw.json, or openclaw mcp addAn Authorization header in openclaw.json
Claude CoworkThe same connector as Claude — one click from its directory, or added by handNowhere, if you sign in — otherwise inside the connector URL, or a request header where the dialog offers one
Perplexity ComputerA custom connector under Account settingsPerplexity's API Key field
Grok BuildThe iHatePosting plugin, or one grok mcp add commandNowhere, if you sign in — otherwise a header in ~/.grok/config.toml, or an environment variable
Antigravity CLImcp_config.json, with serverUrlAn Authorization header in the file
MuseAsk Muse to build a connectorMuse's secure credential prompt
NanoClawncl commands on the NanoClaw hostThe OneCLI vault
PaperclipConnect your own MCP server, under ConnectorsPaperclip's App key field
Ampamp.mcpServers in your Amp user settingsAn Authorization header in settings.json
ClineOne entry in cline_mcp_settings.jsonAn Authorization header in cline_mcp_settings.json
DeepSeek HarnessA dsh-mcp-client block in cordis.patch.ymlAn Authorization header in the patch block
Freebuff CLI.agents/mcp.json, for every project or oneAn Authorization header in .agents/mcp.json
Hermes AgentA block in ~/.hermes/config.yaml, or hermes mcp addAn Authorization header in config.yaml, or ~/.hermes/.env
Kilo CodeThe mcp key in kilo.jsonc, global or per projectAn Authorization header in kilo.jsonc
omp.omp/mcp.json, or ~/.omp/agent/mcp.json for all projectsAn Authorization header in that mcp.json
OpenHands CLI~/.openhands/mcp.json, or one openhands mcp addAn Authorization header in ~/.openhands/mcp.json
WarpSettings → Agents → MCP servers → + AddAn Authorization header in the server's JSON
Devin Desktopmcp_config.json, for every project or oneAn Authorization header in mcp_config.json
ZedA context_servers block in settings.jsonAn Authorization header in settings.json
Kimi CodeA block in ~/.kimi-code/mcp.jsonAn Authorization header in mcp.json
ManusAdd MCP by URL, under ConnectorsThe URL you paste into the connector
CueA custom MCP connector in Cue's connectorsThe URL you paste into the connector
Grok BotAsk your Bot to install the iHatePosting CLIA 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_KEY

If 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