Post to social media from Amp
Amp is a coding agent that reads MCP servers from amp.mcpServers in its settings file, and it can post through iHatePosting once you add that block. Amp can then list your connected accounts, check a post against each network's rules, schedule it and publish it. Threads that run in an orb never read that file, and the route that keeps your key out of your repository is a remote MCP definition, added in your MCP server settings on ampcode.com.
Set it up
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. Add iHatePosting to Amp
Add to your Amp user settings: ~/.config/amp/settings.json on macOS, Linux and WSL, or %USERPROFILE%\.config\amp\settings.json on Windows. The command amp config edit opens it. Do not use the project's .amp/settings.json — it sits in your repository, so your key could be committed with it. This file covers only threads that run on your own machine: the amp CLI and your runners. For threads that run in an orb (ampcode.com and the Mac and iOS apps), add the server at ampcode.com/settings/mcp-servers instead — click Add MCP Server, enter https://ihateposting.com/mcp as the address, choose bearer-token authentication and paste your key. There is a command for that too: save your key on its own in a file named ihateposting-key.txt, then run amp mcp remote --personal add ihateposting https://ihateposting.com/mcp --auth bearer --bearer-token-file ihateposting-key.txt. Replace YOUR_API_KEY with your key.
{ "amp.mcpServers": { "ihateposting": { "url": "https://ihateposting.com/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }3. Ask it to post
Tell Amp 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 Amp
- Amp keeps MCP servers under its own key, amp.mcpServers, not the bare mcpServers root the other editors read. The file is your user settings, and Amp reads settings.json or settings.jsonc at that path. Run amp config edit to open it in your $EDITOR.
- Leave out the type line other tools ask for. Amp's settings schema gives a URL server four fields — url, headers, transport and oauth — requires only url and allows no other key, so a type line fails validation in an editor that reads the schema. Put "$schema": "https://ampcode.com/cli-settings.schema.json" at the top of the file and editors that support JSON Schema validate the block and complete the field names as you type.
- Keep your key out of .amp/settings.json, the workspace file that sits in your repository. Amp treats servers there as untrusted: "MCP servers in workspace settings (.amp/settings.json) require explicit approval before they can run". One waiting for approval shows as awaiting approval in amp mcp doctor, and amp mcp approve ihateposting clears it. A server in your user settings needs no approval, but if the same name is in both files the workspace one wins.
- Threads that run in an orb cannot see the settings file on your machine — the Mac and iOS apps are in that group, because "the agent runs in an orb and not on your device". For those, add iHatePosting in your MCP server settings on ampcode.com, or run amp mcp remote --personal add ihateposting https://ihateposting.com/mcp --auth bearer --bearer-token-file ihateposting-key.txt in your terminal. Every amp mcp remote command needs a scope, and --personal is the one in that command. Amp will not take the token as a command argument, so give it a file, or - as the path to read the key from standard input.
- A wrong key still looks like a working connection. iHatePosting lists its tools to anyone who asks, so Amp shows the server and its tools even with no key at all, and only the call comes back with iHatePosting API 401. Ask Amp to run the whoami tool: it answers with the iHatePosting login and account name your key belongs to. For a remote definition, amp mcp remote --personal check ihateposting shows whether Amp can reach the server, not whether your key works.
- Amp expands ${VAR_NAME} in amp.mcpServers entries, headers included — its own example sends "Authorization": "token ${SRC_ACCESS_TOKEN}". A runner started with --amp-env adds the Secrets and Env Vars you keep on ampcode.com to the environment of the shell commands and the stdio MCP servers a thread runs. For orbs, Amp's MCP page tells you to pass tokens in headers using variables from secrets settings.
Limits. MCP is not behind a plan. Amp's pricing page gives the free Hobby tier "All product features", and says paid tiers "include agent usage, orb usage, and every Amp product feature". Enterprise workspace admins can enforce an MCP registry so that only approved MCP servers are available to workspace members, and "If the registry is unreachable, all MCP servers are blocked". Separately, amp.mcpPermissions allows or blocks MCP servers by pattern and matches a remote server by its url, and Enterprise managed settings use the same amp. keys. To see what your workspace manages, open the CLI command palette with Ctrl+O and run settings: show managed.
Amp's own documentation: MCP in Amp
Nothing goes out unless you say so
Every post Amp 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 block go?
In your Amp user settings, under amp.mcpServers. Run amp config edit to open the file, which can be settings.json or settings.jsonc. Keep it out of the project's .amp/settings.json, which sits in your repository and would carry your key with it, and which needs amp mcp approve before a server there runs.
Why does Amp show the tools but every call answers iHatePosting API 401?
Your key is wrong or has been replaced. iHatePosting lists its tools to anyone who asks, so the server looks connected either way and only the call fails. Create a new key in Settings → Developers, write it into the Authorization header, and ask Amp to run whoami to confirm which account it reaches.
Can Amp use iHatePosting in an orb?
Not from the settings file on your machine — an orb runs its own Amp executor elsewhere, and the Mac and iOS apps work that way too. Add iHatePosting in your MCP server settings on ampcode.com, or run amp mcp remote --personal add ihateposting https://ihateposting.com/mcp --auth bearer --bearer-token-file ihateposting-key.txt in your terminal. Every amp mcp remote command needs a scope, and --personal is the one there.
Do I need the type line that other tools use?
No. Amp's settings schema gives a URL server url, headers, transport and oauth, requires only url and allows no other key, so a type line fails validation in an editor that reads the schema.
Ready to post everywhere from Amp?
Start your 90-day free trial — no credit card, about a minute to your first post.
Sign Up