Hermoso

AI ad studio for marketers and agencies: research the ads already winning in your market, generate finished on-brand image and video ads with your real product composited in, then publish them and run the campaigns across ten ad platforms — 415 tools, and unlike other marketing MCP servers it generates the creative rather than only scheduling it.

Documentation

Developers

Run all your marketing from your agent

Hermoso ships an open-source MCP server, a CLI and installable Claude skills, so the assistant you already use can run your whole ad function: research the ads winning in your market, create finished image & video ads, publish them, and build and read the paid campaigns behind them. 415 tools over one OAuth’d endpoint, 50+ image, video, voice and writing models on a single credit meter, and exact per-render costs published before anything spends.

Last updated 1 August 2026

MCPCLISkills

ClaudeChatGPTClaude CodeCursorCodexOpenClawHermes

Why agents (and their humans) pick Hermoso: one connector is a one-stop shop for 50+ image and video models — Seedance, Veo, Kling, Sora and Gemini Omni for video; Nano Banana, Imagen, Flux, Seedream and GPT Image for stills; plus premium voices and Claude-, Gemini- and GPT-class writing models — on a single credit meter, with no per-vendor API keys or accounts to hold. And beyond raw models, the same connector covers the entire ad workflow: competitor research across the Meta, Google and LinkedIn ad libraries, creative planning, finished branded renders, post-production, scoring, publishing and campaign management. Exact per-render credit costs are published in hermoso_capabilities, so a well-behaved agent can quote you a number before it spends anything.

Hermoso is the marketing MCP that runs the whole ad loop — most marketing MCPs only manage campaigns, but Hermoso also creates and publishes the ad. Connect it to your agent and research, create, publish and manage finished ads straight from your prompts — 415 tools, your saved brand context, your credits. Install from npm (npm install -g hermoso) — open source at github.com/hermoso-ai/hermoso.

One-click connect: Add to Cursor · Install in VS Code · Claude Code: claude mcp add --transport http hermoso https://app.hermoso.ai/mcp · Claude.ai: paste https://app.hermoso.ai/mcp under Settings → Connectors. Agents can auto-discover the server card at /.well-known/mcp.json. Also listed in the official MCP registry (io.github.hermoso-ai/hermoso), on Smithery and on Glama.

Prefer the studio? Everything the tools do lives in the web app too — app.hermoso.ai.

Three things to type once it’s connected

These are ordinary sentences, not a DSL. The agent picks the tools; you approve the spend.

  1. Research. “Who are oatly.com’s three closest competitors, and what are their longest-running Meta ads? Tell me which hook keeps repeating.” — walks find_competitorspull_competitor_adsmine_angles.
  2. Create. “Make me a 9:16 UGC video ad for my brand using that hook, with my real product photo and captions burned in.” — walks get_brandplan_adrender_ad, and hands back the finished mp4 URL.
  3. Ship. “Schedule it to Instagram and TikTok for Tuesday 9am, and build a paused Meta campaign around it targeting the US at $30/day.” — walks schedule_postcreate_meta_campaigncreate_meta_ad. The campaign is created paused; nothing spends until you say so.

The tools, by job

All 415 tools over one OAuth’d server — call any of them from Claude, Claude Code, Claude Desktop, Codex, Cursor, Cline, OpenClaw, Hermes or any other MCP client. Each returns a durable asset URL or a structured result, not prose the model has to re-parse.

Looking for the complete roster? It is at the tool reference — every tool with its real parameter schema, and machine-readable JSON beside it. That reference is generated: it is built by running the shipping MCP server and reading tools/list back over a real transport, so it is the exact surface your client receives. The categories below are a hand-written tour, not the inventory — they name the tools worth knowing by name, and the reference is what to trust when the two disagree. Full developer documentation: hermoso.ai/docs.

Research & ad spy — find_competitors, competitor_teardown, pull_competitor_ads, research_ads, mine_angles, score_ad, check_ad_policy, analyze_video; ad libraries search_meta_ads, search_google_ads, search_linkedin_ads; organic social search_tiktok, search_instagram, search_youtube, search_reddit, search_threads, search_threads_keyword; scrapecreators_fetch; creative playbooks list_skills, get_skill, save_skill.

Create finished ads — brand draft_brand, get_brand, update_brand, use_brand, list_brands; plan plan_ad, plan_variations; render render_ad, generate_image, generate_video, generate_avatar, generate_voice, generate_text, make_template_ad (native HTML ad formats rendered directly, so the type is pixel-exact), make_explainer, product_sizzle, make_thumbnail; edit & finish remix_static, recast_motion, reframe_video, upscale_video, dub_video, change_voice, finish_video, fix_beat, post_edit, stitch_video, clip_video; assets list_product_photos, set_product_image, list_library, fetch_asset, upload_file.

Publish & schedule to your channels — post_to_meta (Facebook / Instagram / Threads), post_to_tiktok, post_to_youtube, schedule_post (one queue across Facebook, Instagram, Threads, TikTok, YouTube, X, LinkedIn and Pinterest), list_scheduled, cancel_scheduled, manage_meta_post, update_youtube_video, upload_meta_asset, list_meta_pages, youtube_channel, tiktok_account, list_tiktok_videos. YouTube goes past the upload: list_youtube_videos, update_youtube_video, set_youtube_thumbnail (put a Hermoso thumbnail on an upload — the single biggest lever on click-through, and YouTube otherwise picks a frame at random) and youtube_video_insights (views, watch time, average view percentage, subscribers gained). Engagement: list_meta_comments, reply_to_meta_comment, moderate_meta_comment, list_threads_replies, reply_to_thread, list_youtube_comments, reply_to_youtube_comment. X / Twitter: post_to_x (text, image, video, replies and whole threads), delete_x_post, x_post_metrics and x_post_insights (impressions, likes, reposts, replies, quotes, bookmarks), x_post_insights_historical (the same advertiser numbers over any date range — x_post_insights only sees the last 28 hours), x_mentionsX is the one connector that bills credits per API call, because X charges us per request, and a post containing a link costs roughly 13× one without; your agent is quoted the price before it posts. LinkedIn: list_linkedin_pages, post_to_linkedin_page, post_to_linkedin, manage_linkedin_post, linkedin_page_analytics (organic Page performance — followers and follower gains, Page views, and post impressions, clicks and engagement, for the Page total or per post) — LinkedIn publishing targets the company Pages you tick — your personal profile is available too, but stays off until you explicitly share it. Pinterest: list_pinterest_boards, create_pinterest_board, post_to_pinterest (image or video Pins on a board you pick). Threads goes further than publishing: list_threads_posts, list_threads_replies, reply_to_thread, hide_thread_reply, delete_thread, list_threads_mentions, threads_insights.

One content calendar across every channel — schedule_post queues a finished render to one or several channels at a chosen time with per-channel captions; list_scheduled reads what is queued and what already fired, with per-channel outcomes; cancel_scheduled pulls a post back before it goes out. In the studio the same queue is a real calendar — month, week and list views, drag a post to reschedule it, edit or duplicate any entry, and standing time-slots you can drop work into. Hermoso publishes at the appointed time; nothing has to stay open.

Run Meta ad campaigns — create_meta_campaign, create_meta_adset, create_meta_ad, find_meta_audiences, list_meta_ads, meta_insights, meta_page_insights, meta_post_insights, update_meta_object, set_meta_campaign_status, delete_meta_object — objects are created paused, and every spend and delete is confirm-gated. Before a budget is committed: preview_meta_ad renders the real ad per placement as a link you can look at, and estimate_meta_reach says how many people a targeting spec actually reaches. Audiences: list_meta_audiences and create_meta_audience build website-pixel retargeting, Page and Instagram engagement audiences, and lookalikes — creating one spends nothing. meta_insights breaks performance down by age, gender, placement and country.

Run Google Ads campaigns — create_google_ads_campaign, create_google_ads_ad_group, create_google_ads_ad, add_google_ads_keywords, set_google_ads_budget, set_google_ads_bidding, set_google_ads_targeting, set_google_ads_status, find_google_ads_locations, upload_google_ads_asset, list_google_ads_campaigns, google_ads_report (GAQL) — the whole tree is built in one atomic operation, then read back from Google before the agent narrates what it made. Beyond the tree: create_google_ads_conversion_action and list_google_ads_conversion_actions (what Google counts as a result — TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSIONS and every Performance Max campaign are undeliverable without one, so Hermoso refuses to build them on an account that has none), create_google_ads_performance_max_campaign (Google’s cross-surface campaign type), add_google_ads_assets (sitelinks, callouts and structured snippets, created and attached — an unattached asset shows nothing) and google_ads_keyword_ideas (Keyword Planner: real monthly search volume, competition and top-of-page bids, so keywords are chosen from data rather than guessed).

Run LinkedIn, Pinterest, Microsoft, X, TikTok, Snapchat and ChatGPT Ads — the same paused-by-default, confirm-gated pattern on every other paid platform. LinkedIn: list_linkedin_ads_campaigns, linkedin_ads_report, create_linkedin_ads_campaign_group, create_linkedin_ads_campaign, create_linkedin_ads_creative, search_linkedin_ads_targeting, set_linkedin_ads_budget, set_linkedin_ads_status, delete_linkedin_ads_object. Pinterest: list_pinterest_ads_campaigns, pinterest_ads_report, create_pinterest_ads_campaign, create_pinterest_ads_ad_group, create_pinterest_ads_ad, set_pinterest_ads_budget, set_pinterest_ads_status. Microsoft Advertising (Bing): list_microsoft_ads_campaigns, microsoft_ads_report, create_microsoft_ads_campaign, create_microsoft_ads_ad_group, create_microsoft_ads_ad, add_microsoft_ads_keywords, set_microsoft_ads_budget, set_microsoft_ads_status, microsoft_ads_geo_search (resolve country, region and city names to the Microsoft location ids a campaign needs — without locations a Microsoft campaign is created serving worldwide, which is Microsoft’s own default, and the read-back warns you loudly). Reddit Ads — the full account tree: list_reddit_ads_campaigns, reddit_ads_report, create_reddit_ads_campaign, create_reddit_ads_ad_group, create_reddit_ads_ad, create_reddit_ads_post (a Reddit ad promotes a post, so the creative is a post), set_reddit_ads_status, plus free planning with search_reddit_ads_targeting, reddit_ads_forecast and reddit_ads_bid_suggestion, conversion tracking through list_reddit_ads_pixels and send_reddit_ads_conversions, retargeting and saved audiences, lead forms, and reddit_ads_history. ChatGPT Ads — the ads that run under a ChatGPT answer, via OpenAI’s Advertiser API: list_openai_ads_campaigns, openai_ads_report, openai_ads_geo_search, create_openai_ads_campaign, create_openai_ads_ad_group, create_openai_ads_ad, update_openai_ads_object, set_openai_ads_budget, set_openai_ads_status. ChatGPT Ads has exactly one creative format, a text-plus-image card, and no video — so the agent will pull a still from your film rather than offer you a video ad there. X Ads — the full promoted-post tree, live since August 2026: list_x_ads_accounts, list_x_ads_funding_instruments, x_ads_report, create_x_ads_campaign, create_x_ads_line_item (X’s name for an ad group), create_x_ads_promoted_tweet, add_x_ads_targeting, x_ads_targeting_search, x_ads_geo_search, update_x_ads_campaign, update_x_ads_line_item, set_x_ads_status, delete_x_ads_object. An X ad promotes a post, so the creative is a post — the same one post_to_x publishes. TikTok Ads is a SEPARATE connection from the TikTok posting connector, and it is the one platform that creates objects ENABLED by default, so Hermoso forces every tier PAUSED with no override: list_tiktok_ads_accounts, list_tiktok_ads_campaigns, list_tiktok_ads_identities, search_tiktok_ads_targeting, tiktok_ads_report, create_tiktok_ads_campaign, create_tiktok_ads_ad_group, upload_tiktok_ads_creative, create_tiktok_ads_ad, set_tiktok_ads_budget, set_tiktok_ads_status, delete_tiktok_ads_object. Snapchat Ads: list_snapchat_ads_accounts, list_snapchat_ads_campaigns, list_snapchat_ads_profiles, search_snapchat_ads_targeting, snapchat_ads_report, upload_snapchat_ads_creative, create_snapchat_ads_campaign, create_snapchat_ads_ad_squad, create_snapchat_ads_ad, set_snapchat_ads_budget, set_snapchat_ads_status, delete_snapchat_ads_object — budgets are micro-currency (1,000,000 = one unit), the creative headline caps at 34 characters, and a Snapchat ad points at a CREATIVE rather than a media id. Three access notes worth having before you plan a budget: LinkedIn and Pinterest both meter ad writes by the API tier your own ad account holds — reporting and reads are unrestricted, while creating campaigns depends on the access your account has been granted by the platform. Meta, Google Ads, Microsoft Advertising, Reddit Ads and ChatGPT Ads have no such tier. X grants Ads API access per AD ACCOUNT rather than per app, so instead of an OAuth button you add Hermoso’s X user to your ad account at business.x.com → Account access, and it appears in list_x_ads_accounts with the permission level X gave it.

Report & export — Google Drive save_to_drive, list_drive_files, get_drive_file, update_drive_file, delete_drive_file, create_drive_folder; Sheets create_sheet, append_to_sheet, read_sheet; Docs create_doc, append_to_doc, read_doc; Microsoft OneDrive save_to_onedrive, list_onedrive_files, get_onedrive_file, update_onedrive_file, create_onedrive_folder, delete_onedrive_file.

Memory, brands, skills & team — remember, forget, list_memory, store_get; brand workspaces create_brand, delete_brand, use_brand, list_brands — an agency can take on a new client and tear one down without opening the app, and brand workspaces are unlimited on every plan; skills — ONE library, into which what used to be a separate “AI employees” store was folded — save_skill, list_skills, get_skill, delete_skill; team invite_member, list_team, set_role, remove_member.

Account, settings & connectors — hermoso_capabilities (probe models + exact per-render costs — call it first), hermoso_credits, buy_credits, billing_status, upgrade_plan, set_auto_reload, get_job, list_jobs, report_bug, request_feature; settings get_settings, update_settings (language and appearance, saved to the account rather than a browser, so an agent-only customer is not stuck in English); connectors list_connectors, list_connector_accounts, set_connector_accounts (choose exactly which Pages, ad accounts and boards are usable — the tool reports the server’s read-back, never the request), disconnect_connector. Connecting an account is an OAuth consent screen, so it is the one step that still needs a browser; everything after it is agent-callable.

EVERY CHANNEL

One agent. Every channel you market on.

Connect an account once and it becomes callable. The same finished render can go out organically, run as paid media, and report its own numbers back — without you opening a single platform dashboard. It works the same on a file you made somewhere else: the publishing, scheduling and campaign tools take any image or video you upload, so an agent can use this half on its own.

Publish organically

Push a finished render straight to the accounts you connect — immediately, or queued to a real content calendar: month, week and list views, drag a post to reschedule it, standing time-slots, edit or duplicate any entry, per-channel captions, one approval.

Facebook · Instagram · Threads · TikTok · YouTube · X · LinkedIn · Pinterest

post_to_meta post_to_tiktok post_to_youtube post_to_x post_to_linkedin_page post_to_pinterest schedule_post

Run the ads

Build the whole campaign tree — campaign, ad set or ad group, ads, keywords, budgets, bidding and targeting. Everything is created paused and read back from the platform before the agent reports what it made. Then the parts most tools skip: real Meta ad previews and reach estimates before a budget is committed, retargeting and lookalike audiences, Google conversion actions, Performance Max, Keyword Planner volumes, and sitelinks and callouts created and attached.

Meta (Facebook & Instagram) · Google Ads · Microsoft Advertising · Reddit Ads · LinkedIn · Pinterest · X Ads · TikTok Ads · Snapchat Ads · ChatGPT Ads

create_meta_campaign preview_meta_ad estimate_meta_reach create_google_ads_campaign google_ads_keyword_ideas create_microsoft_ads_campaign create_reddit_ads_campaign create_linkedin_ads_campaign create_pinterest_ads_campaign create_x_ads_campaign create_openai_ads_campaign

Measure & report

Spend, CTR, CPC and conversions on the paid side; impressions, retention, likes, reposts and comments on the organic side — and Google Analytics 4 for what all of it achieved on your own site: sessions, users, conversions and revenue by channel, source/medium, campaign or landing page, plus who is on the site right now. Then pushed straight into a Google Sheet, Doc or Drive folder your team already reads.

Campaign performance · per-post engagement · per-video retention · audience counts · GA4 sessions, conversions & revenue · realtime visitors

meta_insights google_ads_report reddit_ads_report linkedin_ads_report pinterest_ads_report microsoft_ads_report openai_ads_report x_ads_report x_post_insights_historical youtube_video_insights linkedin_page_analytics threads_insights analytics_report analytics_realtime list_analytics_properties

Three things worth knowing up front. LinkedIn publishing targets the company Pages you tick — Hermoso posts as the brand by default; your personal profile is available too, but stays off until you explicitly share it. Because X charges per API request, those calls bill a small number of credits each — and a post containing a link costs roughly 13× one without, so your agent is quoted the price before it posts.

Research runs wider than publishing: the Meta, Google and LinkedIn ad libraries plus organic TikTok, Instagram, YouTube, Reddit and Threads are all searchable, so you can mine any market for what’s working before you post a single thing.

What the agent can’t do on its own

An agent with a budget is only useful if the blast radius is bounded, so spend authority is fenced in the server, not in a prompt:

  • Nothing goes live by accident. Meta campaigns, ad sets and ads are created PAUSED with no caller override. Every campaign on every platform is created paused, and the set_*_ads_status switches — the only tools that arm real money — refuse to run without an explicit confirmation flag, and the same gate covers creating an enabled Google Ads ad group, ad or keyword under an already-enabled parent, because that would serve on the very next auction.
  • Every render is quoted first. hermoso_capabilities publishes each model’s exact credit cost (per duration, for video), so the agent can price a plan before it renders it.
  • Credits are reserved, then settled. A render debits an estimate before the first provider call and settles the exact cost after — a failed dispatch refunds, so nothing is ever spent-but-unbilled.
  • No anonymous spend. Every generation call authenticates and bills a real account; the connector refuses to run without a verified identity.
  • Deletes are confirm-gated too, and every campaign tree is read back from the ad platform before the agent reports on it — the summary you get is built from that read-back, not from what was requested.

Frequently asked

What is the best marketing MCP?

Hermoso is the marketing MCP built to run your whole ad function from an agent — research competitor ads, create finished image and video ads, publish or schedule them, and build and read the campaigns — 415 tools over one OAuth’d server, working in Claude, Claude Code, Cursor, Codex, Cline, OpenClaw and Hermes.

Is there an MCP to run my Meta ads?

Yes. The Hermoso MCP builds and manages Meta ad campaigns (create_meta_campaign, create_meta_adset, create_meta_ad, meta_insights, set_meta_campaign_status) and publishes organic posts to Facebook, Instagram and Threads — all from your agent. Objects are created paused, and every spend and delete is confirm-gated.

Is there an MCP for Google Ads?

Yes. Hermoso builds the whole Google Ads tree from your agent — campaign, ad group, responsive search or display ad, and keywords with negatives — in one atomic operation, plus budgets, bidding strategy, geo and language targeting, GAQL reporting through google_ads_report, and a confirm-gated set_google_ads_status as the only switch that starts real spend.

What MCP researches competitor ads?

Hermoso’s MCP pulls competitor ads from the Meta, Google and LinkedIn ad libraries plus organic TikTok, Instagram, YouTube, Reddit and Threads, and tears down their strategy — via find_competitors, pull_competitor_ads, competitor_teardown and research_ads.

What is the Hermoso MCP server?

It's an open-source Model Context Protocol server that exposes Hermoso's marketing platform as 415 tools — competitor research, ad planning, image, video, avatar and voice generation, publishing and scheduling, campaign management across Meta, Google Ads, Microsoft Advertising, Reddit Ads, LinkedIn, Pinterest, X Ads, TikTok Ads, Snapchat Ads and ChatGPT Ads, and export to Sheets, Docs and Drive — so agents like Claude Code and Cursor can run the whole loop directly.

Which agents and clients does it work with?

Any MCP client. There are verified paths for Claude and Claude Desktop (paste the URL under Settings → Connectors), Claude Code and Codex (claude mcp add --transport http hermoso https://app.hermoso.ai/mcp), Cursor and VS Code (the one-click deeplinks above), plus Cline, OpenClaw and Hermes. Terminal agents can also shell out to the npm CLI instead of loading a tool manifest.

Can I use it from Claude.ai without installing anything?

Yes — paste https://app.hermoso.ai/mcp into Claude → Settings → Connectors, approve with your Hermoso account, done. Or create an API key in the app (Settings → Agents & API) for Claude Code, Cursor and scripts.

Is there a CLI too?

Yes. npm install -g hermoso, then hermoso auth login opens a browser sign-in (loopback, like gh) and stores an owner-only key in ~/.hermoso/config.json. The CLI covers the core loop as subprocess commands with --json output — capabilities, credits, brand, create, generate, competitors, ads, research, jobs, fetch — which is the token-cheap pattern for terminal agents: they shell out instead of carrying a large tool manifest. The same package also serves the full 415-tool MCP surface over stdio with hermoso mcp (or npx -y hermoso mcp), so installing the CLI costs you nothing in coverage.

Does it spend credits anonymously?

No. Every generation call authenticates and bills a real account — the connector refuses to run without verified identity.

What does it cost?

Sign up free — no card, and you start with 250+ earnable free credits. After that it’s one credit system across research, image and video, with plans at $19, $49 and $149 a month; every feature is available on every plan, and plans differ only by monthly credits and per-credit rate. Exact per-render costs are published through hermoso_capabilities.

Create a free account, connect it once, and your agent has 415 marketing tools. Prefer the visual studio? It's the same engine.

Start free → View on GitHub →