Coding agents and editors

Post to social media from Freebuff CLI

Setup checked September 22, 2026Freebuff

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.

Set it up

  1. 1. Create an iHatePosting API key

    Sign in, open Settings → Developers and create a key. It starts with pk_live_ and is shown in full only once, so copy it before you leave the page.

  2. 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.

    {
      "mcpServers": {
        "ihateposting": {
          "type": "http",
          "url": "https://ihateposting.com/mcp",
          "headers": {
            "Authorization": "Bearer YOUR_API_KEY"
          }
        }
      }
    }
  3. 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

  • 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.

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.

Ready to post everywhere from Freebuff CLI?

Start your 90-day free trial — no credit card, about a minute to your first post.

Sign Up

Other AI agents

See every AI agent