# Hermoso developer documentation > Hermoso is an AI marketing studio that an AI agent can drive end to end: research the ads already > running in a market, generate finished image and video ads, publish them to the brand's own social > channels, and build and manage the paid campaigns behind them. > The full toolset is 906 tools, and all three programmatic surfaces reach every one of them. > The MCP server is hosted at https://app.hermoso.ai/mcp and runs over stdio via `npx -y hermoso mcp`; the `hermoso` CLI > carries the same toolset at a shell prompt (`hermoso call `); and the REST API exposes it at > POST https://app.hermoso.ai/v1/tools/{name}, with GET https://app.hermoso.ai/v1/tools as the live, browsable roster. The difference > between them is transport, not capability. Authentication is an agent key sent as > `Authorization: Bearer hmk_...`. > > The REST API at https://app.hermoso.ai/v1 is server-side only (no CORS) and comes in two tiers, which make different > promises. Modelled resources — posts, channels, media, credits — are a versioned contract: additions > only, nothing removed or retyped inside a version. The tool passthrough is full parity with the > toolset and evolves with it, so read the roster rather than pinning it. The OpenAPI document is > generated from the router itself at https://app.hermoso.ai/openapi.json. An agent with no account can provision one > on a paid plan with POST https://app.hermoso.ai/v1/signup. ## Documentation - [Overview](https://hermoso.ai/docs/) - [Quickstart](https://hermoso.ai/docs/quickstart/) - [Which surface?](https://hermoso.ai/docs/choosing-a-surface/) - [MCP server](https://hermoso.ai/docs/mcp/) - [CLI](https://hermoso.ai/docs/cli/) - [REST API](https://hermoso.ai/docs/api/) - [Skills](https://hermoso.ai/docs/skills/) - [Connectors](https://hermoso.ai/docs/connectors/) - [Jobs & idempotency](https://hermoso.ai/docs/jobs/) - [Credits & costs](https://hermoso.ai/docs/credits/) - [Errors](https://hermoso.ai/docs/errors/) - [All tools](https://hermoso.ai/docs/reference/) - [Ad spy & research](https://hermoso.ai/docs/reference/research/) - [Creative generation](https://hermoso.ai/docs/reference/create/) - [Publishing & scheduling](https://hermoso.ai/docs/reference/publish/) - [Ad campaign management](https://hermoso.ai/docs/reference/ads/) - [Files & documents](https://hermoso.ai/docs/reference/files/) - [Workspace & account](https://hermoso.ai/docs/reference/workspace/) ## Machine-readable - [Tool index, with full JSON Schema for every parameter](https://hermoso.ai/docs/reference/tools.json) - [OpenAPI document for the public REST API](https://hermoso.ai/docs/reference/openapi.json) (live copy: https://app.hermoso.ai/openapi.json) - [Site-wide summary](https://hermoso.ai/llms.txt) ## Connectors - Meta (`meta`): Facebook & Instagram posts, ads, comments and DMs (Messenger + Instagram Direct, message requests included). A Page-less Instagram account uses the Instagram connector. Posts can never be edited. - Instagram (`instagram`): An Instagram account on its own, no Facebook Page needed. Everything Meta does for Instagram, minus ads. A Page-linked account, or one you advertise on, goes on Meta instead, never both. - WhatsApp (`whatsapp`): Message customers from the business’s own WhatsApp number, once they have opted in. Use this only for a number you don’t have yet; one you already manage is ticked on Meta instead, never both. - Google Ads (`google_ads`): Campaigns, budgets and reporting for Google Ads. New campaigns start paused, so nothing spends until you enable them. - Microsoft Ads (`microsoft_ads`): Campaigns, ad groups, search ads, keywords, budgets and reporting on Bing. - Telegram (`telegram`): Post to a channel, group or chat as your own bot, and read replies. 4096 characters of text, 1024 with media. Telegram cannot list a bot’s chats, so you name the destination. - Bluesky (`bluesky`): Post as your account: 300 characters, plus EITHER up to 4 images OR one video, never both (video needs a confirmed email). DMs too: 1000 characters, text only. - Apple Ads (`apple_ads`): App Store search ads and Ads on Apple Maps, all created PAUSED. An App Store ad renders from your App Store Connect page, not an image you upload; a Maps ad uses your own image. - AppLovin Ads (`applovin_ads`): Campaigns, creative sets, reporting and the website pixel for AppLovin Ads, for websites and apps. New campaigns start paused, so nothing spends until you turn them live. - ChatGPT Ads (`openai_ads`): Ads inside ChatGPT: the sponsored card under an answer. Campaigns, budgets and reporting; one format only, a text + image card, no video. - Threads (`threads`): Publish text, image or video posts, repost anyone, read how they performed, reply to and hide replies, search Threads. Threads has no edit, only delete and repost. - YouTube (`youtube`): Publish videos to your channel (public, unlisted or private), then read performance and reply to comments. - TikTok (`tiktok`): Publish a video or photo post (up to 35 images), live or into drafts, and read how each did. TikTok’s API can’t delete or edit a post once it’s up; that’s done in their app. - LinkedIn (`linkedin`): Post to a company Page or your profile, run ad campaigns, read your lead gen form leads (real-time to Hermoso or your CRM) and answer comments. Your profile is off unless you turn it on. - X (Twitter) (`x`): Post, thread, poll or reply, read performance and mentions, answer DMs. X keeps only 30 days of them. X charges per API call, so every action costs credits. - Snapchat (`snapchat`): Publish a finished video to your Public Profile as a Story or a Spotlight, and group Snaps into a Saved Story. Video only: 5–60s for a Story, 6–60s for a Spotlight, 540x960 minimum. NOT OFFERED YET: Snapchat posting is NOT BUILT — there are no Story, Spotlight or Saved Story tools or routes in Hermoso, only an OAuth descriptor. Snap has also not allowlisted this app for the Public Profile API (their own words: "The Public Profile API is currently allowlist only"), so BOTH the code and the access are outstanding. Snapchat ADS is a separate connector and is fully built and live. - Reddit (`reddit`): Post to a subreddit, read and answer the comments, edit a text post’s body or delete it. One subreddit at a time. Reddit bans cross-posting. Titles can never be edited. NOT OFFERED YET: Reddit has not approved API access for this app yet (approval ticket, not a credential). - TikTok Ads (`tiktok_ads`): TikTok ad campaigns, budgets and reporting. - Snapchat Ads (`snapchat_ads`): Snapchat campaigns, ad squads, budgets and performance. Headlines run up to 34 characters. - Reddit Ads (`reddit_ads`): Reddit ad campaigns, ad groups, budgets and reporting. - X Ads (`x_ads`): X (Twitter) campaigns, line items, promoted posts, targeting and reporting. - Pinterest (`pinterest`): Publish image and video Pins to a board you pick, edit or delete Pins and boards afterwards, and read how each one did. - Pinterest Ads (`pinterest_ads`): Pinterest campaigns, ad groups, budgets and reporting, promoting Pins that are already live. - Google Business Profile (`google_business`): Post updates, events and offers to your Google Search & Maps listing, and read the calls, clicks and directions they drive. - Google Analytics (`google_analytics`): GA4 traffic, conversions and realtime activity by channel, campaign or landing page, plus key events and custom dimensions. Only properties you tick are readable. - Google Tag Manager (`google_tag_manager`): Your site’s analytics and conversion tags. Audit what is live and stage new ones. Nothing Hermoso writes reaches a visitor until you publish the container. - Google Search Console (`google_search_console`): Impressions, clicks, CTR and position for the organic traffic Google sends you, the one place real search terms still exist. Plus per-page index status and sitemaps. - Bing Webmaster Tools (`bing_webmaster`): Bing search terms, clicks and position, crawl issues and inbound links, plus keyword research with real impression volumes and no ad spend. Bing also feeds Copilot. - HubSpot (`hubspot`): Your CRM: read and search contacts, create or update one by email, push Meta and LinkedIn lead-form leads in as contacts without twins, and report deals by stage, source and month. - Intercom (`intercom`): Your support inbox: read and search conversations, draft on-brand replies, reply or leave an internal note when you say so, close, snooze, assign or tag, and mine what customers write for ad copy. - Stripe (`stripe`): Revenue, refunds, customers, subscriptions and MRR from your own Stripe account, plus products, prices, payment links, coupons and refunds created from here. Live-account writes confirm first. - PostHog (`posthog`): Per-user funnels, retention and session replay: the questions GA4 cannot answer. Replays come back as links you open in PostHog. - Mixpanel (`mixpanel`): Retention cohorts, event breakdowns and the events a project actually records, plus any saved Mixpanel report, read straight back by its id. - Amplitude (`amplitude`): Event segmentation, funnels with a conversion window, retention curves, and one person’s full activity stream, found by user id, device id or just the start of one. - Google Drive (`google_drive`): One connection for Drive, Sheets and Docs: pull files into Studio, save renders back, build reports and briefs. Hermoso only ever sees the files you pick in the Google picker. - OneDrive (`microsoft_onedrive`): Save finished renders into OneDrive, and organize them into folders. - Slack (`slack`): A message in your channel the moment a render finishes or fails. - Discord (`discord`): A ping in your server every time a render finishes or fails. - Webhook (`webhook`): POST a JSON event to any URL (Zapier, Make, n8n) when a render finishes. - Custom MCP (`mcp`): Tools from any MCP server you run become live tools for the Studio agent.