Install
openclaw skills install @camerondwills/lazyadsManage ad campaigns across Meta, Google, TikTok, LinkedIn, Reddit, Apple, Bing, ChatGPT, and Snapchat Ads via the hosted LazyAds MCP server. Bridge mode (BYOA) lets your agent create/edit/monitor campaigns without Lazy Ads AI. Full MCP (Starter+) also unlocks Lazy Ads AI builds, creatives, optimisation, and competitor intelligence.
openclaw skills install @camerondwills/lazyadsLazyAds is an ad management platform covering 9 platforms: Meta (Facebook/Instagram), Google Ads, TikTok, LinkedIn, Reddit, Apple Ads, Bing Ads, ChatGPT Ads, and Snapchat Ads. Instead of connecting each platform separately, LazyAds exposes everything through a single MCP connection and API key.
Endpoint: https://mcp.lazyads.ai/mcp (Streamable HTTP, MCP 2026-07-28, stateless — no session
handshake). Send Authorization: Bearer <api-key> (or X-API-Key) on every request.
Per-key rate limits (1-minute window): BYOA 60, Starter 30, Growth 100, Scale 500, Enterprise 1000.
Exceeding returns 429 with Retry-After.
Two access modes:
The live catalog with descriptions is at https://lazyads.ai/mcp#tools.
connect_chatgpt_ads using an Ads Manager API key; every other platform uses dashboard OAuth or BYO-key cards)# ~/.hermes/.env
LAZY_ADS_API_KEY=la_your_api_key
~/.hermes/config.yaml (see https://lazyads.ai/hermes):
mcp_servers:
lazyads:
url: "https://mcp.lazyads.ai/mcp"
headers:
Authorization: "Bearer ${LAZY_ADS_API_KEY}"
http://127.0.0.1:3100/mcp.list_platform_connections).Load when the user asks about:
check_platform_billing)create_manual_campaign — create on Meta/Google/TikTok/LinkedIn/Reddit/Apple/Bing/ChatGPT/Snapchat + Lazy Ads (aiManaged=false; LinkedIn = campaign group)create_manual_ad_set — ad set / ad group with geo, age, gender, interests, keywords, custom audiencescreate_manual_ad — ads with copy/creative (Meta needs create_meta_ad_creative first; others take imageUrl)create_meta_ad_creative — Meta creative from a public image URL + copylist_platform_audiences — Meta/TikTok custom audiences to attach via targeting.customAudienceIdsupdate_manual_campaign — name/objective/daily budget/end date on Lazy Ads + platformduplicate_campaign — clone a campaign into a new draftlist_live_platform_campaigns — list campaigns directly from a connected ad accountimport_platform_campaign — link an existing live campaign into Lazy Adssync_campaign_performance / sync_all_campaign_performance — pull live metrics into the unified Lazy Ads dashboard (1–90 days)list_campaigns — Lazy Ads campaigns with status + latest synced metricsget_ad_details — full ad set + ad copy + creative detailspause_resume_campaign / pause_resume_ad_set / pause_resume_ad — propagates to the live platformset_campaign_budget / set_ad_set_budget — daily budgets (ad-set budgets on Meta ABO, TikTok, LinkedIn, Reddit)update_ad_set_targeting — live audience targeting when the platform API allows itupdate_ad_set_bid — manual bid on LinkedIn, TikTok, ChatGPT, or Snapchat (null = LinkedIn auto bid)add_ad_set_keywords — Google / Bing / Apple search keywords with match typesget_campaign_performance / get_ad_spend_summary / get_breakdown_data / get_best_performing_creative / compare_campaignslist_creatives (lifetime ROAS/spend + predicted scores) / attach_creative_to_adlist_audiences — audiences currently used across ad setslist_platform_connections / connect_chatgpt_ads / check_platform_billingget_recent_notificationscreate_manual_campaign (platform + objective + budget)create_manual_ad_set (targeting / audiences)create_meta_ad_creative → create_manual_ad; others: create_manual_ad with imageUrlsync_campaign_performance so the Lazy Ads dashboard shows spend/ROAS without logging into each ads managerbuild_ai_campaign — trigger a full Lazy Ads AI campaign build. Same options as the dashboard and REST POST /api/v1/campaigns/build: platforms, dailyBudgetUsd, objectiveOverride, creativeMix (ai_decide | images_only | videos_only | images_and_videos | existing), preferredCreativeIds, preferredPagePostId, socialContentIds, referenceCreativeIds, customInstructions, skipCompetitorAnalysis, confirmNotPolitical.get_campaign_build_status — poll build progress (2–5 minutes)set_campaign_automation — toggle Tracking (dashboard + analysis) and Management (optimizer may edit) on a campaignget_optimization_suggestions — AI analysis with action recommendationschat_with_lazy_ads — ask the Lazy Ads assistant anything about the account (it can act)get_creative_score — predicted performance before launchgenerate_creative — AI image/video generation (credits + quota enforced)get_audience_suggestions — AI targeting from a descriptionlist_competitors / search_competitor_ads / get_competitor_analysis / scan_competitor_adsget_ai_activity — recent Lazy Ads AI taskslist_activity — searchable user-facing log: credit charges and campaign/ad-set/ad changes"Create a Meta campaign named Summer Sale with OUTCOME_SALES objective and $40/day, then sync performance after it has data."
→ create_manual_campaign → create_manual_ad_set → create_meta_ad_creative → create_manual_ad → later sync_campaign_performance
"Bring my live Google campaigns into Lazy Ads."
→ list_live_platform_campaigns (platform=google) → import_platform_campaign per id → sync_all_campaign_performance
"Check my campaigns — anything I should be worried about today?"
→ list_campaigns + get_campaign_performance (+ get_breakdown_data for the outlier)
"Pause any campaigns where CPA is more than 2× my target for 3+ days"
→ identify via performance tools, then pause_resume_campaign / pause_resume_ad_set / pause_resume_ad
"Build me a Meta campaign for my best-selling product with $50/day budget"
→ build_ai_campaign + get_campaign_build_status (Starter+ only)
build_ai_campaign, chat_with_lazy_ads, generate_creative, scan_competitor_ads, etc.); the server answers with a plan error, not an OpenRouter errorcheck_platform_billing before launching spendget_campaign_build_statussync_all_campaign_performance over one sync per campaign to stay under the per-minute rate limit