Freebuff CLI is a terminal coding agent from Freebuff, and it can post to your social accounts through iHatePosting once you connect the two. It reads MCP servers from a file called mcp.json inside a .agents folder, so our server goes in there as a short block. Freebuff is built on Codebuff, and its README sends you to the Codebuff docs for that file's format.
How do I connect iHatePosting to Freebuff CLI?
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 Freebuff CLI
Add to ~/.agents/mcp.json for every project. On Windows that file is %USERPROFILE%\.agents\mcp.json. For a single project, use .agents/mcp.json in that folder — but the global file keeps your key out of your repository. Freebuff reads the file only when it starts, so restart it after you edit. With a project file, start freebuff inside that folder, or pass --cwd followed by that folder, because a project chosen from the start-up picker does not load it. The first time Freebuff finds a project's .agents/mcp.json it asks "Load and run these? [y/N]". Answer y, or it skips the file for that run. Replace YOUR_API_KEY with your key.
Freebuff CLI — connector{ "mcpServers": { "ihateposting": { "type": "http", "url": "https://ihateposting.com/mcp?client=freebuff", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } - 3Step 3
Ask it to post
Tell Freebuff CLI 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 Freebuff CLI
Every client reaches the same server, and then behaves like itself. These are the things that are true here and not somewhere else.
Setting up the freebuff mcp server for iHatePosting means one short block in mcp.json, as described above.
Put the entry in ~/.agents/mcp.json to have it in every project. On Windows that file is %USERPROFILE%\.agents\mcp.json. For one project, use .agents/mcp.json in that folder — but the global file keeps your key out of your repository. Freebuff reads the folder you started in, then its parent, then your home folder, and merges them in that order, so a server named ihateposting in ~/.agents/mcp.json replaces one with the same name in the project.
A remote entry accepts four keys and no others: type, url, params and headers. The parser is a strict object, so a familiar extra such as disabled or description does not parse. Neither do command, args or env — those belong to Freebuff's other kind of entry, the one that spawns a local server — and a file that fails to parse is skipped whole, taking every server in it with it.
Once the folder is trusted, nothing tells you the file is wrong: the CLI loads it with error output switched off, so a bad file is passed over in silence, and your own ~/.agents is never inspected at all. The one exception is the trust prompt — the first time Freebuff sees a repository's .agents it prints mcp.json: invalid mcp.json instead of listing the server. Freebuff has no /mcp command and no freebuff mcp subcommand either, so otherwise the only way to see the server is to ask the agent to use one of its tools.
A .agents folder inside a repository has to be trusted once. On the first interactive start Freebuff prints the folder, lists what its mcp.json would start — ihateposting, and our address — and asks Load and run these? [y/N]. Answer y; anything else skips both agents and mcp.json for that run. Your own ~/.agents never asks. A run with no terminal attached, such as CI, skips an untrusted folder instead of asking, unless you pass --trust-agents or set CODEBUFF_TRUST_AGENT_DIRS=1 — that variable keeps the Codebuff name inside Freebuff.
Freebuff reads mcp.json once, when it starts, so restart it after you edit the file. It reads it at the folder it started in: start freebuff in your home folder and pick a project from the list, and that project's .agents/mcp.json is never loaded. Start freebuff inside the project folder, or pass --cwd followed by that folder.
Write your key into the Authorization header. Freebuff replaces $NAME in a header with the environment variable of that name, so Bearer $IHATEPOSTING_API_KEY works — but only for names in capitals, and a variable that is not set is sent as the literal text $IHATEPOSTING_API_KEY, so every tool then returns iHatePosting API 401.
Limits. Freebuff is free and supported by text ads. Your free daily Freebucks depend on where you are: 100 a day in the United States, 70 in the United Kingdom and thirteen other countries, 40 in ten more, and 25 everywhere else or over a VPN. Unused daily Freebucks do not carry over, and the Freebucks FAQ also describes subscriptions that replace the daily allowance. We found nothing that makes MCP depend on a plan, and nothing that lets an administrator block MCP servers.
Freebuff's own documentation: MCP servers in the Codebuff docs
Nothing goes out unless you say so
Every post Freebuff CLI 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 Freebuff CLI as tools, so it can draft, check and schedule without you opening a dashboard.
How Freebuff CLI uses it
- You add the connector once — by signing in, or with a key you create
- Freebuff CLI 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 Freebuff CLI already has
# read and check (9)
whoami list_accounts
list_posts get_post
get_analytics get_platform_rules
list_media list_pinterest_boards
validate_post
# write (7)
create_post update_post
reschedule_post delete_post
retry_post upload_media
open_upload_widgetCost, access and what to do when it breaks
What does it cost?
The connector costs nothing on top of iHatePosting. iHatePosting has one plan: $15/month billed annually, or $19/month billed monthly, with unlimited social accounts. It is free for 90 days, no credit card needed, and everything is included during the trial: unlimited accounts, unlimited posts, every feature.
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
Where does the iHatePosting entry go?
In .agents/mcp.json. Use ~/.agents/mcp.json to have it in every project — on Windows, %USERPROFILE%\.agents\mcp.json — or .agents/mcp.json inside one project. If the file already exists, add the ihateposting entry inside its mcpServers object rather than pasting a second one. Freebuff merges the project file first and your home file last, so a home entry with the same name wins.
Why is Freebuff ignoring the iHatePosting tools?
Most often the file did not parse, and once the folder is trusted Freebuff says nothing when that happens. A remote entry accepts only type, url, params and headers, and any other key fails the whole file. Fix the JSON and restart Freebuff, which reads the file only at start-up. If the entry is in a project folder, Freebuff also needs your y to the trust prompt, and it must have been started inside that folder.
How do I check that my key works?
Ask Freebuff to run ihateposting__whoami — it names each MCP tool after its server, with two underscores between. It returns the iHatePosting account your key belongs to. A wrong key, or one that still reads YOUR_API_KEY, comes back as iHatePosting API 401: our server answers the connection either way, so nothing at start-up tells you the key is good.
Why did Freebuff ask "Load and run these?"
Because a .agents folder in a repository can start servers and run agent files, so Freebuff asks once per folder and lists what the mcp.json would start. Answer y to load it. Your own ~/.agents never asks. Where there is no terminal to ask in, such as CI, pass --trust-agents or set CODEBUFF_TRUST_AGENT_DIRS=1.
Is the Freebuff CLI connector free?
Yes. The connector costs nothing on top of iHatePosting, and iHatePosting is free for 90 days, no credit card needed. After that it is $15/month billed annually, or $19 month-to-month, with unlimited accounts.
Which networks can Freebuff CLI post to?
Any account you have connected in iHatePosting, across 15 networks: Instagram, Facebook, LinkedIn, X, Threads, TikTok, YouTube, Pinterest, Bluesky, Mastodon, Telegram, Discord, Slack, Tumblr and Google Business Profile.
Can Freebuff CLI schedule posts for a specific date and time?
Yes. Put the date and time in the prompt — for example "schedule this for Friday at 9:00 AM" — and Freebuff CLI schedules the post for then. iHatePosting reads the time in your account's timezone, and you can ask Freebuff CLI to move a scheduled post to a new time.
One connection reaches every network
Connect your accounts in iHatePosting once. From then on Freebuff CLI 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
- Google Business
- Slack
Ready to post everywhere from Freebuff CLI?
Start your 90-day free trial — no credit card, about a minute to your first post.
Sign UpOther AI agents
New to this? Read how to post to social media from an AI agent, or see iHatePosting pricing: unlimited accounts for $15/month, billed annually.