mcpbeat Sign in

iHatePosting MCP Server

by ihateposting Your server? Claim it
answering

iHatePosting is answering right now. Last checked 2 min ago. It exposes 15 tools.

Draft, check and schedule posts to your connected social accounts from Claude, ChatGPT or Cursor.

Uptime history 7 days of history
7 days agonow
100.0%
Uptime 24h
92 of 92 checks
15
Tools
read from the server
440 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 13

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 16 September 2026. No other catalogue keeps this.

17 Sep a tool appeared list_pinterest_boards
17 Sep a tool changed version
16 Sep 8 tools appeared delete_post, get_analytics, get_post and 5 more
16 Sep 2 tools changed the parameters they ask for create_post, validate_post
16 Sep a tool changed version

Nothing serious here today

Today is the operative word: we check iHatePosting every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 2 min ago.

run in your terminal
claude mcp add mcp --transport http https://ihateposting.com/api/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://ihateposting.com/api/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://ihateposting.com/api/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://ihateposting.com/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://ihateposting.com/api/mcp"
    }
  }
}

Available tools 15

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

post
create_post
Create a social post on iHatePosting. action 'draft' saves it (the default, and the safe choice); 'schedule' needs scheduledDate (YYYY-MM-DD) + scheduledTime (e.g. '9:00 AM', in the account owner's timezone); 'now' publishes immediately to a real audience. Platforms with requirements — Pinterest a board, YouTube a title, TikTok and Instagram media — are set through `options` and `mediaIds`; call get_platform_rules for what each one needs, and validate_post to check before you commit.
delete_post
Delete a post from iHatePosting. THIS DOES NOT UNPUBLISH ANYTHING: a post that has already gone out stays live on the network, and deleting it here only removes iHatePosting's record of it. For that reason a published post is refused unless you pass force: true, and you should only do that after telling the user in words that the platform post will remain. A post that is publishing at this moment is never deletable, forced or not — the worker is mid-flight on it. Deleting a scheduled post stops it going out.
get_post
Everything about ONE post: the shared text, each platform's own copy and options, the attached media, and per-send status with the live URL or the error. list_posts gives you the id; this explains what actually happened to it. Read it before update_post so you change what is there rather than overwriting it.
update_post
Rewrite a draft or scheduled post. THIS REPLACES THE WHOLE POST, so read it with get_post first and send back the complete set — anything you leave out is removed, including platforms and per-platform options. Note the shape differs from create_post: this one wants `accountIds` (the ids from list_accounts, NOT platform names) and it requires `action`. Two posts cannot be rewritten: one that has already published, and one that goes to several platforms and was saved as a group — that one is refused with a sentence saying so, because editing a single row of a group would publish some platforms twice. Delete it and create it again instead.
accounts
list_accounts
List the connected social accounts (platform, handle, health) available for posting. The response also names the iHatePosting account the API key belongs to — if the accounts listed are not the ones you expect, check that `account.email` is the right person before assuming anything is missing.
analytics
get_analytics
How the posts actually performed: impressions, engagement and follower numbers per connected channel, plus the top posts. Use this to answer 'how did that do', 'which platform is working' or 'what should I post more of' — it reports what iHatePosting collected from each network, not an estimate. Some platforms report nothing (they are named in `unmeasuredPlatforms`), so a zero there means 'not measurable', not 'no reach'. If a plan ever gates a range, the answer says so in a sentence with `locked: true` rather than returning silently empty numbers.
media
list_media
The images and videos already in the user's iHatePosting library, newest first, with the `id` that create_post's `mediaIds` wants. Call this whenever a platform needs a file — Instagram, Pinterest, TikTok and YouTube all do — to see whether what you need is already uploaded. Returns ids and dimensions only; there is no downloadable link, by design.
pinterest
list_pinterest_boards
The Pinterest boards you can pin to, with the `id` that create_post's `options.pinterest.boardId` requires. Pinterest REFUSES a pin without a board, and a board id is an opaque number you cannot guess — call this before creating any Pinterest post. If several Pinterest accounts are connected, pass `accountId` from list_accounts, because boards belong to one account and pinning to another account's board fails. An empty list with no error means the account is connected and simply has no boards yet — make one in Pinterest first.
platform
get_platform_rules
What each platform will and will not accept: character limit, whether media is required, how many images, video formats and length, and which per-platform options are MANDATORY (e.g. Pinterest needs a board, YouTube needs a title). Call this BEFORE writing a post — it is the difference between composing something that publishes and something the platform rejects.
posts
list_posts
List the 50 most recent iHatePosting posts with per-platform status (draft/scheduled/published/failed) and live URLs.
reschedule
reschedule_post
Move a scheduled post to a different date and time. Takes the post id from list_posts, plus scheduledDate (YYYY-MM-DD) and scheduledTime (e.g. '9:00 AM') read in the ACCOUNT OWNER'S timezone, not yours or the user's device. A post that has already published cannot be moved — its time is a record of what happened — and one that is publishing right now is refused until it finishes.
retry
retry_post
Send a failed post again. Without targetId every failed platform on the post is retried; with one, only that send. Only a send that FAILED is retried — one that published is left alone, so this cannot double-post. If the cause was the account rather than the post (a revoked or paused connection) the answer says so, and retrying will not help until the user reconnects.
upload
upload_media
Put an image or video into the library and get back an id for create_post. Give the bytes as base64 — a picture you generated or were handed, not a path and not a URL. Three things happen for you: the API checks type, size and quota and mints a one-time upload URL, the bytes go to storage, then the file is registered. Large video is not practical this way (base64 is a third bigger again and has to pass through the conversation) — upload those in the browser and find them with list_media.
validate
validate_post
Check a post against every platform you plan to send it to, WITHOUT creating anything. Runs the same checks the publisher runs seconds before it posts, so the answer is what will really happen — 'X counts this as 1200/280 characters', 'YouTube needs a title', 'TikTok slideshows take JPEG or WebP photos'. Free to call as often as you like; use it before create_post rather than discovering a problem after the post is spent.
whoami
whoami
Who the API key belongs to: the iHatePosting login (email and account name). Use this for any question about who the user is or which account is connected. This is NOT a social media handle — the handles from list_accounts belong to the connected profiles, which may carry other people's names.

Endpoints

URLTransportStateLatencyChecked
https://ihateposting.com/api/mcp streamable-http answering 459 ms 2 min ago

Alternatives to iHatePosting

same job, measured the same way
Social0 MCP
by abhishek-b-r

Post and schedule across 9 social platforms from Claude, Cursor, or ChatGPT.

83 installs/wk local only
Antwork
by antwork

Draft, schedule, and publish social posts for your workspace straight from your AI.

answering
Agentreacher
by thijssmudde

Connect your AI to social media. Create, schedule, and publish posts to 9+ platforms.

87 installs/wk local only
Postey
by postey

Draft, schedule and publish social posts to nine platforms from any AI agent.

answering
FastSocial
by socialappsceduler-eng

Schedule and manage social media posts across 7 platforms directly from Claude.

local only
Cadencz
by cadencz

Plan, draft, schedule and publish social posts grounded in your Website Brain.

14 tools answering
Readdit Later
by sanjhaiprakash18

Search, organize, and chat with your saved Reddit posts from Claude, Cursor, and any MCP client.

327 installs/wk answering
Schedchie
by schedchie-www

Schedule, publish and track social posts on nine networks from your AI assistant.

answering

iHatePosting — questions

Answers built from our own checks of this server.

What can iHatePosting do?
It exposes 15 tools, read directly from the server on our last check. Among them: create_post, delete_post, get_analytics, get_platform_rules, get_post, list_accounts and 9 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is iHatePosting working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 440 ms. The bar chart above shows every period we have measured.
How do I connect iHatePosting?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does iHatePosting need an API key?
No. iHatePosting completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 15 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is iHatePosting?
It answers our handshake in 440 ms on average, which is faster than 34% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.