hermosoCAUTION
MCP server and CLI for Hermoso, the AI marketing agent and AI ad generator. Research winning ads, create image and video ads, publish to your channels and run paid campaigns from your AI agent.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
The AI marketing agent with an AI ad generator built in, run from any AI agent: Claude Code, Claude.ai, Cursor, Codex, or your own scripts. Research the ads already winning in a market, generate finished image & video ads (your real product composited in, copy + CTA included), publish them to your own social channels, and build & manage the ad campaigns behind them, all over MCP tools, a CLI, or installable Claude skills.
906 tools. tools/list is always the authoritative set; hermoso_capabilities (free) returns the live model catalog with exact per-render credit costs plus the full capability map.
A Chrome extension too. Hermoso: save and clone ads saves any ad to your swipefile in one click, clones it for your brand, and pulls any company's ads from its website.
Most of it costs nothing. Publishing and scheduling posts, building and managing paid campaigns, analytics and insights, comments and DMs, connectors, profiles and team seats are free on every plan, with no per-post or per-channel fee and no seat pricing. Credits are spent only on running an AI model (image, video, voice, text, planning, post-production) and on Ad Spy research, and posting an ad you already rendered is never a second charge. The one exception is X (Twitter), where posting and reads bill a few credits per call because X charges per API request.
What it connects to. Ad platforms: Meta, Google Ads, TikTok Ads, LinkedIn Ads, Reddit Ads, X Ads, Pinterest Ads, Snapchat Ads, Microsoft Advertising, Apple Search Ads, ChatGPT Ads and AppLovin Ads, plus product feeds in Google Merchant Center. Publishing and scheduling — ten channels: Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn, Pinterest, Bluesky and Telegram. Messaging: WhatsApp (you message a person, so it is not an eleventh publ
93488453c019OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add hermoso --env HERMOSO_TOKEN=${HERMOSO_TOKEN} -- npx -y [email protected] mcpTrust audit
CAUTIONgrade C · trust 78/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (6 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (18)
.agents/skills/hermoso-ad-from-brand
.agents/skills/hermoso-generate
.agents/skills/hermoso-marketing
.agents/skills/hermoso-product-photoshoot
.agents/skills/hermoso-research
return console.log(`✓ Saved. API: ${apiBase}${cfg.token ? ' · token stored' : ''}`);const u = new URL(req.url, 'http://127.0.0.1');
.prettierrc.js
export const LIBRARY_APP_URI = `ui://hermoso/library-${createHash('sha1').update(LIBRARY_APP_HTML).digest('hex').slice(0, 10)}.html`;const assetId = (url) => createHash('sha1').update(String(url)).digest('hex').slice(0, 12);icon: { light: 'file:../../icons/hermoso.svg', dark: 'file:../../icons/hermoso.dark.svg' },icon: { light: 'file:../../icons/hermoso.svg', dark: 'file:../../icons/hermoso.dark.svg' },@n8n/node-cli, release-it
@modelcontextprotocol/sdk
account, and server-side conversion events with the Conversion API key AppLovin issues on request). Each has list + report + create + budget/status tools
mcp/tools.mjs
it, and read back what worked. Use when the user asks for "this week's ads", "run my marketing", "post
Gates applied: no_behavioural_pass.
93488453c019full audit observations/trust-audit/mcp-server/hermoso-ai__hermoso.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 93488453c019 | CAUTION | C | 78 | first audit |
Questions
What is the hermoso MCP server?
MCP server and CLI for Hermoso, the AI marketing agent and AI ad generator. Research winning ads, create image and video ads, publish to your channels and run paid campaigns from your AI agent.
Is hermoso safe to connect to an agent?
With care. The audit graded it C (78/100) and found 18 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does hermoso need?
It reads EDGE_SECRET, HEIST_OAUTH_ISSUER, HEIST_TOKEN, HERMOSO_OAUTH_ISSUER and HERMOSO_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does hermoso run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as hermoso at 0.1.406.
How current is this page?
The grade is for one exact copy of the source (93488453c019), read on 2026-10-12. The repository is watched and re-audited when it changes.