npx claudepluginhub amekala/ads-mcp --plugin adspirerWant just this skill?
Add to a custom plugin, then install with one command.
AI performance marketing agent for paid media, PPC, SEM, and digital marketing. Manage Google Ads, Meta Ads (Facebook & Instagram), LinkedIn Ads, and TikTok Ads campaigns via natural language. Automate keyword research, budget optimization, ROAS tracking, wasted spend analysis, ad creative management, audience targeting, and cross-platform reporting. Powered by Adspirer — 100+ tools for campaign creation, bid optimization, CPA tracking, retargeting, and marketing automation across all major ad platforms.
This skill uses the workspace's default tool permissions.
Performance Marketing Agent — Powered by Adspirer
AI agent for performance marketing, paid media, and digital advertising. Connects directly to ad platform APIs to create campaigns, pull live performance data, research keywords, optimize budgets, and manage ads across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads.
This skill installs the Adspirer plugin (openclaw-adspirer) — the same 100+ tools, same MCP server, same capabilities as the adspirer-ads-agent skill.
Setup
# Install the plugin
openclaw plugins install openclaw-adspirer
# Authenticate
openclaw adspirer login
# Connect your ad platforms
openclaw adspirer connect
# Verify
openclaw adspirer status
Connect your ad accounts at https://adspirer.ai/connections
Required Workflow
Follow these steps in order. Do not skip steps.
Step 1: Check Connected Platforms
Always start here before any ad operation:
- Call
get_connections_status - Shows connected platforms, primary/secondary accounts, account IDs
- If the target platform is not connected, direct the user to https://www.adspirer.com
Step 2: Identify the Task
| User goal | Workflow | Key tools |
|---|---|---|
| View campaign metrics | Performance Analysis | get_campaign_performance, get_meta_campaign_performance, get_linkedin_campaign_performance |
| Cross-platform overview | Cross-Platform Dashboard | See Cross-Platform section below |
| Find keywords | Keyword Research | research_keywords |
| Create a campaign | Campaign Creation | Platform-specific flows below |
| Reduce wasted spend | Budget Optimization | optimize_budget_allocation, analyze_wasted_spend, analyze_search_terms |
| Switch accounts | Account Management | switch_primary_account |
| Compare platforms | Cross-Platform | Call each platform's performance tool, present side-by-side |
| Check ad fatigue | Creative Management | detect_meta_creative_fatigue, analyze_linkedin_creative_performance |
| Understand audiences | Audience Analysis | get_meta_audience_insights, get_linkedin_audience_insights, search_audiences |
| Add ad extensions | Ad Extensions | add_sitelinks, add_callout_extensions, add_structured_snippets, list_campaign_extensions |
| Add/manage keywords | Keyword Management | add_keywords, remove_keywords, update_keyword, add_negative_keywords, remove_negative_keywords |
Step 3: Execute Tools
Follow the workflow patterns below. Always read first (performance, status), then act (create, optimize).
Step 4: Summarize and Recommend
Present results in tables with key metrics. Highlight top and underperforming items. Propose actionable next steps.
Performance Analysis
- Google Ads:
get_campaign_performance— params:lookback_days(7/30/60/90, default 30), optionalcustomer_id - Meta Ads:
get_meta_campaign_performance— params:lookback_days, optionalad_account_id - LinkedIn Ads:
get_linkedin_campaign_performance— params:lookback_days - TikTok Ads:
get_tiktok_campaign_performance— params:lookback_days
Present: impressions, clicks, CTR, spend, conversions, cost/conversion, ROAS. Default to 30-day lookback.
Cross-Platform Performance Dashboard
When the user asks for overall performance, a weekly review, or cross-platform comparison:
- Call
get_connections_statusto identify active platforms - For each connected platform, pull performance:
- Google:
get_campaign_performance - LinkedIn:
get_linkedin_campaign_performance - Meta:
get_meta_campaign_performance
- Google:
- For each platform, pull waste analysis:
- Google:
analyze_wasted_spend - LinkedIn:
analyze_linkedin_wasted_spend - Meta:
analyze_meta_wasted_spend
- Google:
- Present a unified scorecard
- Recommend top 3 actions across all platforms
Campaign Creation
Google Ads Search:
research_keywords— mandatory- Discuss bidding strategy with user
discover_existing_assets— check for existing ad assetsvalidate_and_prepare_assets— validate before creationcreate_search_campaign— create the campaign (PAUSED status)- Add ad extensions:
add_sitelinks— add 10+ validated sitelinksadd_callout_extensions— add 4+ calloutsadd_structured_snippets— add relevant structured snippets
list_campaign_extensions— verify all extensions were added
Google Ads Performance Max:
- Discuss bidding strategy with user
discover_existing_assets— check existing assetsvalidate_and_prepare_assets— validate creative assetscreate_pmax_campaign— create the campaign- Add ad extensions (same as Search)
add_pmax_search_themes— add up to 50 themes per asset groupsearch_audiences+add_pmax_audience_signal— add audience signals
Google Ads Demand Gen:
discover_existing_assets— check existing images, logos, videossearch_audiences— find relevant audiences foraudience_segmentsparametercreate_demandgen_campaign— create the campaign
Google Ads YouTube:
validate_video— validate the YouTube videodiscover_existing_assets— find existing logossearch_audiences— find relevant audiencescreate_youtube_campaign— create the campaign
LinkedIn Ads:
get_linkedin_organizations— get linked company pages (CALL FIRST)discover_linkedin_assets— check existing assetsvalidate_and_prepare_linkedin_assets— validate assetscreate_linkedin_image_campaign(or video/carousel/text) — create the campaign
Meta Ads:
get_connections_status— verify Meta account connecteddiscover_meta_assets— check existing assetsvalidate_and_prepare_meta_assets— validate assetssearch_meta_targetingorbrowse_meta_targeting— find audiencescreate_meta_image_campaign(or video/carousel) — create the campaign
TikTok Ads:
discover_tiktok_assets— check existing assetsvalidate_and_prepare_tiktok_assets— validate video assetscreate_tiktok_campaignorcreate_tiktok_video_campaign— create the campaign
Critical: Input Format Requirements
Follow these rules EXACTLY when calling Adspirer tools to avoid validation errors:
IDs Must Be Strings
All IDs (campaign_id, ad_account_id, video_id, image_hash, ad_group_id, keyword_id, organization_id, creative_id) MUST be passed as quoted strings, never as bare integers.
- OK:
"existing_video_id": "1333064875515942" - BAD:
"existing_video_id": 1333064875515942
Never Modify IDs
Copy IDs exactly as returned by list/discover tools. Do not round, truncate, or change any digits.
Always Call List/Discover Before Create/Update
Many tools require IDs from prior tool calls:
list_campaigns→ getcampaign_idbefore update/pause/structureget_campaign_structure→ getad_group_idbefore keyword operationsdiscover_existing_assets→ getimage_hash,video_idbefore campaign creationget_linkedin_organizations→ getorganization_idandaccount_id
Text Length Limits
- Google Ads headline: max 30 characters
- Google Ads description: max 90 characters
- Google Ads sitelink text: max 25 characters
- Google Ads callout: max 25 characters
- Meta primary_text: max 125 characters
- Meta headline: max 40 characters
- LinkedIn introductory_text: max 600 characters
- LinkedIn headline: max 70 characters
Enum Values Are Case-Insensitive
- status: ENABLED, PAUSED, ACTIVE, ARCHIVED
- objective: OUTCOME_TRAFFIC, OUTCOME_SALES, OUTCOME_LEADS, etc.
- match_type: EXACT, PHRASE, BROAD
- call_to_action: LEARN_MORE, SHOP_NOW, SIGN_UP, etc.
Budgets Are Numbers
Pass budget fields as numbers, not strings:
- OK:
"budget_daily": 50 - BAD:
"budget_daily": "50"
Keywords Format
For add_negative_keywords, each keyword must be an object:
- OK:
"keywords": [{"text": "free", "match_type": "BROAD"}] - BAD:
"keywords": ["free", "cheap"]
Available Tools — Complete Reference
Google Ads Tools
Performance & Analytics:
get_campaign_performance— campaign metrics (impressions, clicks, CTR, spend, conversions, ROAS). Params:lookback_days(default 30), optionalcustomer_idanalyze_wasted_spend— find underperforming keywords and ad groups burning budgetoptimize_budget_allocation— suggest budget reallocations across campaignsanalyze_search_terms— review search terms, identify negative keyword opportunitiesexplain_performance_anomaly— explain sudden changes in campaign metricsget_benchmark_context— industry benchmarks for the vertical
Campaign Creation:
select_google_campaign_type— interactive campaign type selection wizardresearch_keywords— keyword research with search volumes, CPC, competition. Params:business_descriptionorseed_keywords, optionalwebsite_url,target_locationdiscover_existing_assets— check existing images, videos, logos in the accountvalidate_and_prepare_assets— validate creative assets before campaign creationvalidate_video— validate YouTube video IDs for PMax/YouTube campaignscreate_search_campaign— create Google Search campaign (PAUSED)create_pmax_campaign— create Performance Max campaigncreate_demandgen_campaign— create Demand Gen campaign (YouTube, Gmail, Discover)create_youtube_campaign— create YouTube video campaignadd_demandgen_ad_group— add ad group to existing Demand Gen campaign
Campaign Management:
list_campaigns— list all campaigns with status, budget, performance summaryget_campaign_structure— detailed campaign structure (ad groups, keywords, ads, extensions)update_campaign— update campaign settingspause_campaign— pause a campaignresume_campaign— resume a paused campaignupdate_bid_strategy— change bidding strategy (Maximize Clicks, Target CPA, Target ROAS, etc.)
Keyword Management:
add_keywords— add keywords to ad group. Params:campaign_id,ad_group_id,keywords(array of{"text": "...", "match_type": "EXACT|PHRASE|BROAD"})remove_keywords— remove keywords from ad groupupdate_keyword— update keyword bid, match type, or statusadd_negative_keywords— add negative keywords. Params:campaign_id,keywords(array of{"text": "...", "match_type": "BROAD|PHRASE|EXACT"})remove_negative_keywords— remove negative keywords
Ad Management:
suggest_ad_content— AI-generated headline/description suggestions from real datacreate_ad— create new responsive search adupdate_ad_headlines— update RSA headlinesupdate_ad_descriptions— update RSA descriptionsupdate_ad_content— update ad content (headlines + descriptions)pause_ad— pause an adresume_ad— resume a paused ad
Ad Extensions:
add_sitelinks— add sitelink extensions (target 10+). Params:campaign_id,sitelinks(array of{"link_text": "...", "final_url": "...", "description1": "...", "description2": "..."})add_callout_extensions— add callout extensions (target 8+). Params:campaign_id,callouts(array of strings, max 25 chars each)add_structured_snippets— add structured snippet extensions. Params:campaign_id,snippets(array of{"header": "...", "values": ["...", "..."]})list_campaign_extensions— verify extensions on a campaign
PMax Search Themes & Audience Signals:
add_pmax_search_themes— add search themes (max 50 per asset group). Params:campaign_id,search_themes(array of strings)get_pmax_search_themes— list existing search themesremove_pmax_search_themes— remove search themes by resource nameadd_pmax_audience_signal— add audience signal with segment IDsget_pmax_audience_signals— list existing audience signalsremove_pmax_audience_signal— remove audience signal by resource namesearch_audiences— search for in-market, affinity, and custom audiences by keyword
Business Profile:
get_business_profile— saved brand profileinfer_business_profile— AI-inferred profile from ad datasave_business_profile— save/update brand profilehelp_user_upload— help user upload creative assets
LinkedIn Ads Tools
Performance & Analytics:
get_linkedin_campaign_performance— campaign metrics. Params:lookback_days(default 30)get_linkedin_engagement_metrics— engagement metrics (likes, shares, comments, follows)get_linkedin_audience_insights— audience demographics and segment performanceanalyze_linkedin_wasted_spend— find underperforming campaigns burning budgetoptimize_linkedin_budget— budget reallocation recommendationsexplain_linkedin_anomaly— explain sudden metric changesanalyze_linkedin_creative_performance— per-creative performance metrics
Campaign Creation:
select_linkedin_campaign_type— interactive campaign type selection wizardget_linkedin_organizations— get linked company pages and account IDs (CALL FIRST before any LinkedIn operation)discover_linkedin_assets— check existing images/videos in the account. Params:account_id(fromget_linkedin_organizations)validate_and_prepare_linkedin_assets— validate/upload assets before campaign creationcreate_linkedin_image_campaign— create image ad campaign. Params:campaign_name,daily_budget(min $10),organization_id,introductory_text(max 600 chars),landing_page_url(HTTPS),locations(array of location URNs), plus optional targeting (industries,seniorities,job_titles,company_sizes)create_linkedin_video_campaign— create video ad campaigncreate_linkedin_carousel_campaign— create carousel ad campaigncreate_linkedin_text_campaign— create text ad campaignexplain_linkedin_objectives— explain available campaign objectives and when to use each
Campaign Management:
list_linkedin_campaigns— list all campaigns with status and metricsget_linkedin_campaign_structure— detailed campaign structure (creatives, targeting, settings). Params:campaign_idpause_linkedin_campaign— pause a campaign. Params:campaign_idresume_linkedin_campaign— resume a paused campaign. Params:campaign_idupdate_linkedin_campaign— update campaign settings (name, status, objective, etc.)update_linkedin_campaign_budget— update daily/total budget. Params:campaign_id,daily_budgetand/ortotal_budgetupdate_linkedin_campaign_schedule— update start/end dates. Params:campaign_id,start_date,end_dateupdate_linkedin_campaign_targeting— update targeting criteria. Params:campaign_id, plus targeting facets (locations,industries,seniorities,job_titles,company_sizes, etc.)clone_linkedin_campaign— clone a campaign with optional modifications. Params:campaign_id, optional overridesbatch_update_linkedin_campaigns— bulk update multiple campaigns at once
Creative Management:
list_linkedin_creatives— list all creatives for a campaign. Params:campaign_idadd_linkedin_creative— add image creative to campaignadd_linkedin_text_creative— add text creative to campaignadd_linkedin_video_creative— add video creative to campaignupdate_linkedin_creative— update creative content. Params:creative_iddelete_linkedin_creative— delete a creative. Params:creative_idpause_linkedin_creative— pause a creative. Params:creative_idresume_linkedin_creative— resume a paused creative. Params:creative_idgenerate_linkedin_ad_creatives— AI-generated ad creative variations
Targeting & Audiences:
get_linkedin_campaign_targeting— get current targeting for a campaign. Params:campaign_idsearch_linkedin_targeting— search for targeting facets. Params:query,facet_type(e.g.,"job_titles","industries","seniorities","company_sizes","skills")research_business_for_linkedin_targeting— AI-recommended targeting based on business website
Campaign Groups & Conversions:
list_linkedin_campaign_groups— list campaign groups (folders). Params:account_idupdate_linkedin_campaign_group— update campaign group settingslist_linkedin_conversions— list conversion tracking rules. Params:account_idassociate_linkedin_conversion— link conversion to campaign. Params:campaign_id,conversion_idmanage_linkedin_conversions— create/update/delete conversion tracking rules
Meta Ads Tools
Performance & Analytics:
get_meta_campaign_performance— campaign metrics. Params:lookback_days(default 30), optionalad_account_idanalyze_meta_ad_performance— ad-level performance breakdownget_meta_audience_insights— audience demographics and segment performanceanalyze_meta_wasted_spend— find underperforming ads/ad sets burning budgetoptimize_meta_budget— budget reallocation recommendationsdetect_meta_creative_fatigue— identify ads losing effectiveness over timeoptimize_meta_placements— placement-level performance analysis (Feed, Stories, Reels, etc.)explain_meta_anomaly— explain sudden metric changesanalyze_meta_audiences— audience segment performance analysis
Campaign Creation:
select_meta_campaign_type— interactive campaign type selection wizarddiscover_meta_assets— check existing images/videos in the accountvalidate_and_prepare_meta_assets— validate/upload assets before campaign creationcreate_meta_image_campaign— create image ad campaigncreate_meta_video_campaign— create video ad campaigncreate_meta_carousel_campaign— create carousel ad campaignadd_meta_ad_set— add ad set to existing campaign
Campaign Management:
list_meta_campaigns— list all campaigns with status and metricsget_meta_campaign_details— detailed campaign structureupdate_meta_campaign— update campaign settingspause_meta_campaign— pause a campaignresume_meta_campaign— resume a paused campaignduplicate_meta_campaign— duplicate a campaign with optional modificationslist_meta_ad_sets— list ad sets in a campaignupdate_meta_ad_set— update ad set targeting, budget, schedulelist_meta_ads— list ads in an ad setupdate_meta_ad— update ad creative/contentadd_meta_ad— add new ad to ad setget_meta_ad_creatives— get creative details for ads
Targeting & Audiences:
search_meta_targeting— search for targeting options (interests, behaviors, demographics). Params:query, optionaltarget_typebrowse_meta_targeting— browse targeting categorieslist_meta_instagram_accounts— list connected Instagram accountslist_meta_pixels— list Meta pixels for conversion tracking
Lead Forms:
list_meta_lead_forms— list lead gen formsget_meta_lead_form_submissions— get lead form submissions
TikTok Ads Tools
discover_tiktok_assets— check existing assetsvalidate_and_prepare_tiktok_assets— validate video assetscreate_tiktok_campaign— create campaigncreate_tiktok_video_campaign— create video campaign
Account & Utility Tools
get_connections_status— show connected platforms, account IDsswitch_primary_account— change active ad accountget_usage_status— check tool call quota and subscription tierecho_test— test MCP connectivity
Monitoring & Reporting Tools
create_monitor— set up metric alerts (ROAS, CPA, CTR thresholds)list_monitors— list active monitorsschedule_brief— schedule recurring performance reportsgenerate_report_now— generate one-time performance reportlist_scheduled_tasks— list all scheduled tasksmanage_scheduled_task— update/delete scheduled tasksstart_research— start async research taskget_research_status— check research task statusaudit_conversion_tracking— audit conversion tracking setup
Safety
- All campaigns created in PAUSED status for review
- Write operations always require user confirmation
- Read operations (performance, research, analytics) are safe to run freely
- No local credential storage — OAuth 2.1 with PKCE
Platform Guidance
| Platform | Min Daily | Recommended | Best for |
|---|---|---|---|
| Google Ads Search | $10 | $50+ | High-intent search traffic |
| Google Ads PMax | $10 | $50+ | Broad reach with automation |
| Google Ads Demand Gen | $10 | $20+ | YouTube, Gmail, Discover |
| Meta Ads | $5/ad set | $20+ | Awareness and retargeting |
| LinkedIn Ads | $10 | $50+ | B2B targeting (job titles, industries) |
| TikTok Ads | $20 | $50+ | Younger demographics, video-first |
Pricing
| Plan | Price | Tool Calls |
|---|---|---|
| Free Forever | $0/mo | 15/month |
| Plus | $49/mo | 150/month |
| Pro | $99/mo | 600/month |
| Max | $199/mo | 3,000/month |
All plans include all 4 ad platforms. Sign up at https://adspirer.ai/settings?tab=billing