Coding agents and editors

Post to social media from omp

Setup checked September 22, 2026Stencil Labs

omp is a terminal coding agent from Stencil Labs, and once iHatePosting is connected it can post to your social accounts from the terminal. Add the block of JSON, run /mcp reload, and the agent can list your connected accounts, check a post against each network's rules, and draft, schedule or publish it. It reads the plain mcpServers shape, so the same block works in one project or in every project.

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 omp

    Add to .omp/mcp.json in your project, or ~/.omp/agent/mcp.json for every project. Then run /mcp reload. 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 omp 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 omp

  • Put the block in .omp/mcp.json inside a project, or in ~/.omp/agent/mcp.json for every project, in both cases under a top-level mcpServers object. A project .omp/mcp.json is shared with everyone who clones the repository, so keep your key in ~/.omp/agent/mcp.json rather than committing it. A named profile reads ~/.omp/profiles/<name>/agent/mcp.json instead, and sees only its own user-level servers, never the default profile's file. After you edit, run /mcp reload, then /mcp list, which groups servers by source and shows which file supplied each one.
  • Keep the type line. omp treats a server with no type as stdio, and a remote entry without it fails with an error naming the server and saying stdio server requires "command" field. The fix is the line already in the block: "type": "http".
  • Write your key into the header. omp expands ${VAR} and ${VAR:-default} when it loads the file, but an unresolved placeholder stays literal text, so a header that names a variable which is unset or empty reaches us as a wrong key and every tool answers iHatePosting API 401. A header value starting with ! runs a shell command instead, and if that command fails, times out after 10 seconds or prints only whitespace, omp leaves the header out altogether and the tools answer No API key.
  • omp imports MCP servers already written for Claude Code, Codex, Gemini CLI, OpenCode, Cursor, Windsurf and VS Code, so iHatePosting may already be there from another tool. The first definition found wins and duplicates are not merged, with omp's own files ahead of every imported source, and a differently named definition is shadowed too when its transport, endpoint, auth and request-id mode all match a higher-priority one. Use /mcp disable ihateposting to hide an imported copy rather than editing the other tool's config. A disabledServers entry in your user file hides a server by name whatever supplied it, and project files are skipped when the mcp.enableProjectConfig setting is false.
  • Check it with /mcp test ihateposting, which shows the server name and version, the tool count and up to ten tool names. That proves the address, not the key: our endpoint forwards your key to the API rather than checking it when the connection opens, so the test passes with a wrong key and the 401 arrives only when a tool runs. Ask omp to run the whoami tool, which names the iHatePosting login your key belongs to and how many accounts are connected.
  • yolo is omp's built-in approval mode, and omp classes MCP server tools as write-tier, so yolo runs a posting call without asking. Anything the agent writes here stays a draft unless you ask for it to go out now or at a set time, and in yolo nothing stops to confirm that send. Set tools.approvalMode to always-ask in ~/.omp/agent/config.yml to be asked first, or keep your mode and add a tools.approval entry of prompt for the posting tool, using the exact tool name omp shows in a pending call or under /tools.

Limits. omp is open source under the MIT licence and you supply your own model provider credentials. Its documentation records no plan or admin gate on MCP servers. One limit is worth knowing: an MCP request times out after 30 seconds by default, so a large media upload may need a timeout in milliseconds on the server entry, or OMP_MCP_TIMEOUT_MS, which overrides every per-server timeout for that process.

Stencil Labs's own documentation: MCP in omp

Nothing goes out unless you say so

Every post omp 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 .omp/mcp.json inside a project, or in ~/.omp/agent/mcp.json for every project, under a top-level mcpServers object. Keep your key in the user file, because a project .omp/mcp.json is shared with everyone who clones the repository. Under a named profile the user file is ~/.omp/profiles/<name>/agent/mcp.json instead. Run /mcp reload after you edit.

Why does omp say the server requires "command"?

The type line is missing. Without type, omp reads the entry as a local stdio server and looks for a command to run. Add "type": "http" and run /mcp reload.

Why is iHatePosting missing from /mcp list?

Check the file still parses as JSON and holds a top-level mcpServers object, then run /mcp reload. A disabledServers entry in your user file hides a server by name whatever supplied it, and project files are skipped when the mcp.enableProjectConfig setting is false.

How do I check that my key works?

/mcp test ihateposting shows only that our server answered, and it answers even when the key is wrong. Ask omp to run the whoami tool, which names the login your key belongs to. A wrong key, or one that still reads YOUR_API_KEY, comes back as iHatePosting API 401, and a header omp dropped comes back as No API key.

Ready to post everywhere from omp?

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