Run Hermoso from any MCP client

Two transports, one config block, and 922+ marketing tools. Hermoso is a standard Model Context Protocol server, so the client is a question about config syntax rather than capability.

Hermoso’s server is a plain Model Context Protocol server, so “which client?” is mostly a question about config syntax rather than capability. There are two ways in and both reach the same 922+ tools.

The two transports

  • Hosted, streamable HTTP: https://app.hermoso.ai/mcp. This is the one most clients want. It supports OAuth with dynamic client registration and PKCE, so a client that speaks the full authorization flow needs no key at all; a client that does not can send an Authorization: Bearer hmk_… header instead. Note it is streamable HTTP only. There is no legacy HTTP+SSE endpoint, so a client that speaks only the old transport has nothing to connect to here.
  • stdio, via npm: npx -y hermoso mcp, with your key in HERMOSO_TOKEN. Any stdio MCP client can load it. The same package is also a CLI (npm install -g hermoso), which is the token-cheap path for terminal agents: they shell out per command instead of carrying an 922+ tool manifest through every turn.

Agents can auto-discover the server card at /.well-known/mcp.json, and it is listed in the official MCP registry as io.github.hermoso-ai/hermoso.

The generic config block

Most clients take some spelling of this:

{ "mcpServers": { "hermoso": {
    "url": "https://app.hermoso.ai/mcp",
    "headers": { "Authorization": "Bearer <your key>" }
} } }

Create the key in Hermoso under MCP & CLI → Terminal & API keys. One client is a genuine exception: Codex reads TOML, not JSON, so a copied mcpServers block will not load there. See the Codex page for the four lines it wants instead.

Clients with their own page

  • Claude: connects with OAuth, nothing to paste.
  • ChatGPT: connects with OAuth, nothing to paste.
  • Claude Code: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Cursor: signs in from the terminal with hermoso auth login, nothing to paste.
  • Codex: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Cline: takes an API key in an Authorization header.
  • OpenClaw: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Grok Bot: adds the Hermoso Marketing Bot template and takes an API key in the chat, or signs in from the Bot’s own terminal.
  • Hermes: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Gemini CLI: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Perplexity: connects with OAuth, nothing to paste.
  • Le Chat: connects with OAuth, nothing to paste.
  • Claude Cowork: connects with OAuth, nothing to paste.
  • Perplexity Computer: connects with OAuth, nothing to paste.
  • Paperclip: connects with OAuth, nothing to paste.
  • Gemini: connects with OAuth, nothing to paste.
  • Grok Build: signs in from the terminal with hermoso auth login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • Kimi Code: adds the hosted URL to mcp.json and signs in with /mcp-config login, nothing to paste; a terminal agent, so the CLI is the cheaper path for long runs.
  • DeepSeek Harness: signs in from the terminal with hermoso auth login and runs Hermoso as a local server, nothing to paste.
  • Manus: takes an API key in an Authorization header.
  • Muse, set up by one chat message that connects with OAuth, nothing to paste.

Four clients deliberately have no page of their own, and it is worth saying why rather than implying broader support than we have tested. VS Code: Hermoso publishes a one-click VS Code deeplink, but there is no VS Code install block anywhere in the product and no tested path, so there is no page claiming one. The deeplink installs the bare endpoint and leaves authentication to VS Code’s own OAuth. Claude Desktop: Claude Desktop uses the identical Connectors flow as claude.ai, so it is covered by the Claude page rather than duplicated. Grok: Grok chat connects today through the setup card on /mcp; it has no page of its own yet because its per-channel copy would duplicate the ChatGPT pages rather than add anything only we can say. Muse: Meta Muse is set up by one chat message rather than a settings screen, so its guide is written by hand at hermoso.ai/muse rather than generated here.

Every channel, from any of them

The client does not change what is reachable. From any of them: publish and schedule to Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn, Pinterest, Bluesky, Telegram, Google Business Profile; research the Meta, Google and LinkedIn ad libraries plus organic TikTok, Instagram, YouTube, Reddit and Threads; render finished image and video ads across 100+ models; and build campaigns on Meta, Google Ads, Microsoft Advertising, Reddit Ads, LinkedIn, Pinterest, X Ads, TikTok Ads, Snapchat Ads, ChatGPT Ads, Apple Search Ads and AppLovin Ads.

One publishing surface is built and held back, waiting on the platform: Reddit: organic posting and post stats are built, but Reddit’s Responsible Builder Policy requires explicit written approval before an app may use the Data API, and that ticket has not been granted. The connector is held back rather than offered as an OAuth screen leading to a dead API. Reddit Ads is a different connection and it is live: the full campaign tree, forecasting, targeting search, pixels and lead forms.

What no client can do on its own

An agent with a budget is only useful if the blast radius is bounded, so the fence is in the server rather than in a prompt. Every ad campaign, ad set, ad group and ad is created paused, and the status switches that arm real money refuse to run without an explicit confirmation flag. Every render is quoted first (hermoso_capabilities publishes each model’s exact credit cost before anything spends). Credits are reserved before the first provider call and settled at the exact cost afterwards, so a failed dispatch refunds rather than leaving you billed for nothing. Deletes are confirm-gated too, and every campaign tree is read back from the ad platform before your agent tells you what it built.

One step is deliberately yours: linking each account, once. Most channels link through the platform’s own OAuth consent screen in a browser; Bluesky takes an app password and Telegram a bot token, pasted in Hermoso. Everything after that is a tool call.

Frequently asked questions

Does Hermoso work with any MCP client?

Over stdio, yes. Any client that can launch npx -y hermoso mcp gets all 922+ tools. Over the hosted endpoint it is streamable HTTP only: there is no legacy HTTP+SSE route, so a client that speaks only the old transport has nothing to connect to.

Do I need an API key, or does OAuth work?

Both paths exist. The hosted endpoint supports OAuth with dynamic client registration and PKCE, which is how the Claude, ChatGPT, Perplexity, Le Chat, Claude Cowork, Perplexity Computer, Paperclip and Gemini connectors sign in with nothing pasted. Clients that start a local process sign in once with hermoso auth login instead, and a client that can do neither sends an API key (hmk_…) in an Authorization: Bearer header, created on the MCP & CLI tab, under Terminal & API keys.

What is the MCP endpoint URL?

https://app.hermoso.ai/mcp, declared as a streamable-HTTP remote in the server card at /.well-known/mcp.json. The package is hermoso on npm and io.github.hermoso-ai/hermoso in the official MCP registry.

Start free, no card needed. Every feature is on every plan. Credits are spent only on AI models and Ad Spy research; posting, scheduling, ads management and analytics are free.

Start free →   See pricing