ihateposting-mcp
MCP server for iHatePosting — draft, schedule, and inspect social posts from Claude, Cursor, or any MCP client.
npm · fingerprint bfd1f894d25c324d8960366d · repository · RSS
17tools
3recorded versions
24dtracked
unchanged 10d
What changed
Changed 2026-10-20 11:37 UTC
1 schema or annotation change with the description left byte-identical.
--- pinned/update_post +++ observed/update_post { "annotations": { "destructiveHint": true, - "description": "'draft' keeps it unscheduled, 'schedule' needs the date and time below, 'now' publishes to a real audience.", + "description": "To edit a post and KEEP it going out, send 'schedule' with scheduledDate and scheduledTime below — get_post's `scheduledLocal.date` and `scheduledLocal.time`, sent back unchanged. 'draft' TAKES A POST OFF ITS SCHEDULE: it is refused for a post that is already scheduled, and it is the right answer only for one that is already a draft. 'now' publishes to a real audience at once.", "enum": [ "draft", "schedule",
Changed 2026-10-18 11:02 UTC
1 description rewritten.
--- pinned/reschedule_post +++ observed/reschedule_post { "annotations": { "destructiveHint": true, - "description": "Move a SCHEDULED post to a different date and time. ONE SEND AT A TIME: a scheduled post going to several accounts is stored as one post per send, so this moves just that platform and leaves the others where they are (an older row can still carry several platforms, and moves them together). A draft is refused: schedule a draft with update_post with action 'schedule', which checks each platform first and gives each its own post. 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 (`ownerTimezone` from whoami), not yours or the user's device. A post's `scheduledAt` is UTC (it ends in Z) — never copy its digits as a time; work from `scheduledLocal` (the owner's date and time) that list_posts and get_post give beside it, so 'an hour later' is an hour later. The reply's `scheduledLocal` is where the post now is. 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.", + "description": "Move a SCHEDULED post to a different date and time. ONE SEND AT A TIME: a scheduled post going to several accounts is stored as one post per send, so this moves just that platform and leaves the others where they are (an older row can still carry several platforms, and moves them together). A draft is refused: schedule a draft with update_post with action 'schedule', which checks each platform first and gives each its own post. 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 (`ownerTimezone` from whoami), not yours or the user's device. A post's `scheduledAt` is UTC (it ends in Z) — never copy its digits as a time; work from `scheduledLocal` (the owner's date and time) that list_posts and get_post give beside it, so 'an hour later' is an hour later. The reply's `scheduledLocal` is where the post now is. 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. A FAILED post is not rescheduled either: there is no upcoming slot to move, and moving it would not re-send it. Send it again with retry_post, which re-queues only the sends that failed; reschedule_post is for a post that is still scheduled. Check `status` from list_posts before calling this — on 2026-10-15 one agent called it on ten failed posts in a minute and was refused ten times.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {
Current tools
Show all 17 tool fingerprints
create_post
delete_post
get_analytics
get_platform_rules
get_post
get_upload_ticket
list_accounts
list_media
list_pinterest_boards
list_posts
open_upload_widget
reschedule_post
retry_post
update_post
upload_media
validate_post
whoami
Watch this server yourself
If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.
npx -y mcp-pin@0.2.3 -- <your ihateposting-mcp command>
Or subscribe to this page's RSS feed to be told when it changes.
Badge
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/3d8465a51fd819a9.html)