mureo exposes 173 tools via the Model Context Protocol (MCP): 170 advertising and SEO operation tools across Google Ads, Meta Ads, and Search Console, plus 2 rollback tools and 1 cross-platform anomaly-detection tool. Any MCP-compatible client can connect and call these tools over stdio.
The server communicates over stdin/stdout using the MCP JSON-RPC protocol. It is not meant to be run interactively — it should be launched by an MCP client.
Add to your MCP configuration (~/.config/claude/mcp.json or the app’s settings):
"args" : [ "-m" , "mureo.mcp" ]
Add to .cursor/mcp.json in your project root:
"args" : [ "-m" , "mureo.mcp" ]
If mureo is installed in a virtual environment, use the full path to the Python interpreter:
"command" : "/path/to/venv/bin/python" ,
"args" : [ "-m" , "mureo.mcp" ]
Or use uv to run it:
"args" : [ "run" , "python" , "-m" , "mureo.mcp" ]
Tool Description Required Parameters google_ads.campaigns.listList campaigns customer_idgoogle_ads.campaigns.getGet campaign details customer_id, campaign_idgoogle_ads.campaigns.createCreate a campaign (search or display, via channel_type) customer_id, namegoogle_ads.campaigns.updateUpdate campaign settings customer_id, campaign_idgoogle_ads.campaigns.update_statusChange status (ENABLED/PAUSED/REMOVED) customer_id, campaign_id, statusgoogle_ads.campaigns.diagnoseDiagnose campaign delivery customer_id, campaign_id
Tool Description Required Parameters google_ads.ad_groups.listList ad groups customer_idgoogle_ads.ad_groups.createCreate an ad group customer_id, campaign_id, namegoogle_ads.ad_groups.updateUpdate an ad group customer_id, ad_group_id
Tool Description Required Parameters google_ads.ads.listList ads customer_idgoogle_ads.ads.createCreate a responsive search ad (RSA) customer_id, ad_group_id, headlines, descriptionsgoogle_ads.ads.create_displayCreate a responsive display ad (RDA); image files are uploaded automatically customer_id, ad_group_id, headlines, long_headline, descriptions, business_name, marketing_image_paths, square_marketing_image_paths, final_urlgoogle_ads.ads.updateUpdate an ad customer_id, ad_group_id, ad_idgoogle_ads.ads.update_statusChange ad status customer_id, ad_group_id, ad_id, statusgoogle_ads.ads.policy_detailsGet ad policy approval details customer_id, ad_group_id, ad_id
Tool Description Required Parameters google_ads.keywords.listList keywords customer_idgoogle_ads.keywords.addAdd keywords customer_id, ad_group_id, keywordsgoogle_ads.keywords.removeRemove a keyword customer_id, ad_group_id, criterion_idgoogle_ads.keywords.suggestGet keyword suggestions (Keyword Planner) customer_id, seed_keywordsgoogle_ads.keywords.diagnoseDiagnose keyword quality scores customer_id, campaign_idgoogle_ads.keywords.pausePause a keyword customer_id, ad_group_id, criterion_idgoogle_ads.keywords.auditAudit keyword performance and quality customer_id, campaign_idgoogle_ads.keywords.cross_adgroup_duplicatesFind duplicate keywords across ad groups customer_id, campaign_id
Tool Description Required Parameters google_ads.negative_keywords.listList negative keywords customer_id, campaign_idgoogle_ads.negative_keywords.addAdd negative keywords to a campaign customer_id, campaign_id, keywordsgoogle_ads.negative_keywords.removeRemove a negative keyword customer_id, campaign_id, criterion_idgoogle_ads.negative_keywords.add_to_ad_groupAdd negative keywords to an ad group customer_id, ad_group_id, keywordsgoogle_ads.negative_keywords.suggestSuggest negative keywords based on search terms customer_id, campaign_id
Tool Description Required Parameters google_ads.budget.getGet campaign budget customer_id, campaign_idgoogle_ads.budget.updateUpdate budget customer_id, budget_id, amountgoogle_ads.budget.createCreate a new campaign budget customer_id, name, amount
Tool Description Required Parameters google_ads.accounts.listList accessible Google Ads accounts (none)
Tool Description Required Parameters google_ads.search_terms.reportGet search terms report customer_idgoogle_ads.search_terms.analyzeAnalyze search terms with intent classification customer_id, campaign_id
Tool Description Required Parameters google_ads.sitelinks.listList sitelink extensions customer_id, campaign_idgoogle_ads.sitelinks.createCreate a sitelink extension customer_id, campaign_id, sitelink_text, final_urlgoogle_ads.sitelinks.removeRemove a sitelink extension customer_id, campaign_id, extension_id
Tool Description Required Parameters google_ads.callouts.listList callout extensions customer_id, campaign_idgoogle_ads.callouts.createCreate a callout extension customer_id, campaign_id, callout_textgoogle_ads.callouts.removeRemove a callout extension customer_id, campaign_id, extension_id
Tool Description Required Parameters google_ads.conversions.listList conversion actions customer_idgoogle_ads.conversions.getGet conversion action details customer_id, conversion_action_idgoogle_ads.conversions.performanceGet conversion performance metrics customer_idgoogle_ads.conversions.createCreate a conversion action customer_id, name, typegoogle_ads.conversions.updateUpdate a conversion action customer_id, conversion_action_idgoogle_ads.conversions.removeRemove a conversion action customer_id, conversion_action_idgoogle_ads.conversions.tagGet conversion tracking tag snippet customer_id, conversion_action_id
Tool Description Required Parameters google_ads.recommendations.listList optimization recommendations customer_idgoogle_ads.recommendations.applyApply an optimization recommendation customer_id, recommendation_idgoogle_ads.device_targeting.getGet device targeting settings customer_id, campaign_idgoogle_ads.device_targeting.setSet device targeting bid adjustments customer_id, campaign_id, device_type, bid_modifiergoogle_ads.bid_adjustments.getGet bid adjustment settings customer_id, campaign_idgoogle_ads.bid_adjustments.updateUpdate bid adjustments customer_id, campaign_idgoogle_ads.location_targeting.listList location targeting criteria customer_id, campaign_idgoogle_ads.location_targeting.updateUpdate location targeting customer_id, campaign_idgoogle_ads.schedule_targeting.listList ad schedule targeting customer_id, campaign_idgoogle_ads.schedule_targeting.updateUpdate ad schedule targeting customer_id, campaign_idgoogle_ads.change_history.listList account change history customer_id
Tool Description Required Parameters google_ads.performance.reportGet performance report customer_idgoogle_ads.performance.analyzeAnalyze performance trends and anomalies customer_idgoogle_ads.cost_increase.investigateInvestigate sudden cost increases customer_id, campaign_idgoogle_ads.health_check.allRun a comprehensive account health check customer_idgoogle_ads.ad_performance.compareCompare ad performance across variants customer_id, ad_group_idgoogle_ads.ad_performance.reportGet detailed ad-level performance report customer_idgoogle_ads.network_performance.reportGet network-level performance breakdown customer_idgoogle_ads.budget.efficiencyAnalyze budget utilization efficiency customer_idgoogle_ads.budget.reallocationSuggest budget reallocation across campaigns customer_idgoogle_ads.auction_insights.getGet auction insights (competitor analysis) customer_id, campaign_idgoogle_ads.rsa_assets.analyzeAnalyze RSA asset performance customer_id, ad_group_idgoogle_ads.rsa_assets.auditAudit RSA assets for best practices customer_id, campaign_idgoogle_ads.search_terms.reviewReview search terms with rule-based scoring customer_id, campaign_id
Tool Description Required Parameters google_ads.btob.optimizationsGet B2B-specific optimization suggestions customer_id
Tool Description Required Parameters google_ads.landing_page.analyzeAnalyze landing page relevance and quality customer_id, campaign_idgoogle_ads.creative.researchResearch competitive creative strategies customer_id
Tool Description Required Parameters google_ads.monitoring.delivery_goalMonitor campaign delivery against goals customer_id, campaign_idgoogle_ads.monitoring.cpa_goalMonitor CPA against target goals customer_id, campaign_idgoogle_ads.monitoring.cv_goalMonitor conversion volume against goals customer_id, campaign_idgoogle_ads.monitoring.zero_conversionsDetect campaigns with zero conversions customer_id
Tool Description Required Parameters google_ads.capture.screenshotCapture a screenshot of a URL url
Tool Description Required Parameters google_ads.device.analyzeAnalyze device-level performance customer_id, campaign_idgoogle_ads.cpc.detect_trendDetect CPC trend (rising/stable/falling) customer_id, campaign_id
Tool Description Required Parameters google_ads.assets.upload_imageUpload a local image file as a Google Ads asset customer_id, file_path
Tool Description Required Parameters meta_ads.campaigns.listList campaigns account_idmeta_ads.campaigns.getGet campaign details account_id, campaign_idmeta_ads.campaigns.createCreate a campaign account_id, name, objectivemeta_ads.campaigns.updateUpdate a campaign account_id, campaign_idmeta_ads.campaigns.pausePause a campaign account_id, campaign_idmeta_ads.campaigns.enableEnable a paused campaign account_id, campaign_id
Tool Description Required Parameters meta_ads.ad_sets.listList ad sets account_idmeta_ads.ad_sets.createCreate an ad set account_id, campaign_id, name, daily_budgetmeta_ads.ad_sets.updateUpdate an ad set account_id, ad_set_idmeta_ads.ad_sets.getGet ad set details account_id, ad_set_idmeta_ads.ad_sets.pausePause an ad set account_id, ad_set_idmeta_ads.ad_sets.enableEnable a paused ad set account_id, ad_set_id
Tool Description Required Parameters meta_ads.ads.listList ads account_idmeta_ads.ads.createCreate an ad account_id, ad_set_id, name, creative_idmeta_ads.ads.updateUpdate an ad account_id, ad_idmeta_ads.ads.getGet ad details account_id, ad_idmeta_ads.ads.pausePause an ad account_id, ad_idmeta_ads.ads.enableEnable a paused ad account_id, ad_id
Tool Description Required Parameters meta_ads.creatives.listList ad creatives account_idmeta_ads.creatives.createCreate a standard ad creative account_id, namemeta_ads.creatives.create_carouselCreate a carousel creative (2-10 cards) account_id, page_id, cards, linkmeta_ads.creatives.create_collectionCreate a collection creative account_id, page_id, product_ids, linkmeta_ads.creatives.create_dynamicCreate a dynamic product ad creative account_id, catalog_idmeta_ads.creatives.upload_imageUpload an image for use in creatives account_id, file_path
Tool Description Required Parameters meta_ads.images.upload_fileUpload an image from local file account_id, file_path
Tool Description Required Parameters meta_ads.insights.reportGet performance report account_idmeta_ads.insights.breakdownGet breakdown report (age, gender, etc.) account_id, campaign_id
Tool Description Required Parameters meta_ads.audiences.listList custom audiences account_idmeta_ads.audiences.createCreate a custom audience account_id, name, subtypemeta_ads.audiences.getGet audience details account_id, audience_idmeta_ads.audiences.deleteDelete a custom audience account_id, audience_idmeta_ads.audiences.create_lookalikeCreate a lookalike audience account_id, source_audience_id, country
Tool Description Required Parameters meta_ads.conversions.sendSend conversion events (generic) account_id, pixel_id, eventsmeta_ads.conversions.send_purchaseSend a purchase event account_id, pixel_id, event_time, user_data, currency, valuemeta_ads.conversions.send_leadSend a lead event account_id, pixel_id, event_time, user_data
Tool Description Required Parameters meta_ads.pixels.listList pixels account_idmeta_ads.pixels.getGet pixel details account_id, pixel_idmeta_ads.pixels.statsGet pixel firing statistics account_id, pixel_idmeta_ads.pixels.eventsList pixel events account_id, pixel_id
Tool Description Required Parameters meta_ads.analysis.performanceAnalyze overall performance trends account_idmeta_ads.analysis.audienceAnalyze audience performance and overlap account_idmeta_ads.analysis.placementsAnalyze placement performance breakdown account_idmeta_ads.analysis.costAnalyze cost trends and efficiency account_idmeta_ads.analysis.compare_adsCompare performance across ads account_idmeta_ads.analysis.suggest_creativeSuggest creative improvements based on data account_id
Tool Description Required Parameters meta_ads.catalogs.listList product catalogs account_id, business_idmeta_ads.catalogs.createCreate a product catalog account_id, business_id, namemeta_ads.catalogs.getGet catalog details account_id, catalog_idmeta_ads.catalogs.deleteDelete a product catalog account_id, catalog_idmeta_ads.products.listList products in a catalog account_id, catalog_idmeta_ads.products.addAdd a product to a catalog account_id, catalog_id, retailer_id, name, availability, condition, price, url, image_urlmeta_ads.products.getGet product details account_id, product_idmeta_ads.products.updateUpdate a product account_id, product_idmeta_ads.products.deleteDelete a product account_id, product_idmeta_ads.feeds.listList feeds for a catalog account_id, catalog_idmeta_ads.feeds.createCreate a feed (URL-based, scheduled import) account_id, catalog_id, name, feed_url
Tool Description Required Parameters meta_ads.lead_forms.listList lead forms (per page) account_id, page_idmeta_ads.lead_forms.getGet lead form details account_id, form_idmeta_ads.lead_forms.createCreate a lead form account_id, page_id, name, questions, privacy_policy_urlmeta_ads.leads.getGet lead data (per form) account_id, form_idmeta_ads.leads.get_by_adGet lead data (per ad) account_id, ad_id
Tool Description Required Parameters meta_ads.videos.uploadUpload a video from URL account_id, video_urlmeta_ads.videos.upload_fileUpload a video from local file account_id, file_path
(See Creatives section above for carousel and collection tools.)
Tool Description Required Parameters meta_ads.split_tests.listList split tests account_idmeta_ads.split_tests.getGet split test details and results account_id, study_idmeta_ads.split_tests.createCreate a split test account_id, name, cells, objectives, start_time, end_timemeta_ads.split_tests.endEnd a split test account_id, study_id
Tool Description Required Parameters meta_ads.ad_rules.listList automated rules account_idmeta_ads.ad_rules.getGet rule details account_id, rule_idmeta_ads.ad_rules.createCreate an automated rule (alerts, auto-pause, etc.) account_id, name, evaluation_spec, execution_specmeta_ads.ad_rules.updateUpdate an automated rule account_id, rule_idmeta_ads.ad_rules.deleteDelete an automated rule account_id, rule_id
Tool Description Required Parameters meta_ads.page_posts.listList Facebook page posts account_id, page_idmeta_ads.page_posts.boostBoost a page post (create ad from post) account_id, page_id, post_id, ad_set_id
Tool Description Required Parameters meta_ads.instagram.accountsList connected Instagram accounts account_idmeta_ads.instagram.mediaList Instagram posts account_id, ig_user_idmeta_ads.instagram.boostBoost an Instagram post (create ad from post) account_id, ig_user_id, media_id, ad_set_id
Search Console tools reuse the same Google OAuth2 credentials as Google Ads — no additional authentication is required.
Tool Description Required Parameters search_console.sites.listList verified sites (none) search_console.sites.getGet site details site_url
Tool Description Required Parameters search_console.analytics.queryQuery search analytics data site_urlsearch_console.analytics.top_queriesGet top search queries site_urlsearch_console.analytics.top_pagesGet top pages by clicks/impressions site_urlsearch_console.analytics.device_breakdownGet performance breakdown by device site_urlsearch_console.analytics.compare_periodsCompare search performance across time periods site_url
Tool Description Required Parameters search_console.sitemaps.listList sitemaps for a site site_urlsearch_console.sitemaps.submitSubmit a sitemap site_url, sitemap_url
Tool Description Required Parameters search_console.url_inspection.inspectInspect a URL for indexing status site_url, inspection_url
Cross-platform tools for inspecting and applying the reversal of a previously-recorded action_log entry. rollback.apply re-dispatches through the same MCP handler used for forward actions, so the reversal re-enters the full policy gate (auth, rate-limit, GAQL validation, planner allow-list).
Tool Description Required Parameters rollback.plan.getInspect the reversal plan for an action_log entry (supported / partial / not_supported), its operation + params, and any caveats. Read-only. indexrollback.applyExecute the reversal plan for action_log[index]. Requires confirm=true as a literal boolean. Appends a new log entry tagged rollback_of=<index>. index, confirm
Both tools accept an optional state_file argument (default STATE.json), which is resolved strictly inside the MCP server’s current working directory. Path traversal, symlink escape, and rollback.* self-recursion are all refused. A second apply of the same index is refused (idempotency is enforced by scanning later log entries for a matching rollback_of marker). Downstream SDK exceptions are logged server-side only; the MCP response returns a generic message so tokens and account identifiers cannot leak into model context.
Cross-platform anomaly detection that operates on STATE.json’s action_log history rather than a platform API directly.
Tool Description Required Parameters analysis.anomalies.checkCompare a campaign’s current metrics against a median-based baseline built from action_log history. Returns severity-ordered anomalies — zero spend (CRITICAL), CPA spike (HIGH/CRITICAL, gated by 30+ conversions), CTR drop (HIGH/CRITICAL, gated by 1000+ impressions). current (current.campaign_id and current.cost required)
had_prior_spend (default true) suppresses the zero-spend alert for fresh campaigns. min_baseline_entries (default 7) controls how many history entries are required before a baseline is built; below this, baseline is null and only zero-spend is evaluated. Numeric fields accept int / float / numeric-string and reject "N/A" or booleans. state_file is sandboxed the same way as for the rollback tools. A parseable-but-corrupt STATE.json produces a baseline_warning in the response without silencing live zero-spend detection.
Beyond individual MCP tools, mureo provides higher-level operational workflows via Claude Code slash commands . These commands orchestrate multiple MCP tools in sequence, guided by the strategy context defined in STRATEGY.md.
Command Purpose /onboardInteractive account setup, STRATEGY.md generation, STATE.json init /daily-checkMode-aware daily health monitoring /rescueEmergency performance rescue /search-term-cleanupStrategy-aligned search term hygiene /creative-refreshPersona/USP-driven ad copy refresh /budget-rebalanceMode-guided budget reallocation /competitive-scanAuction analysis with Market Context /sync-stateManual STATE.json synchronization
Each command reads strategy context (Operation Mode, Persona, USP, Brand Voice, Market Context) from STRATEGY.md and campaign state from STATE.json, then selects and invokes the appropriate MCP tools. For example, /daily-check adapts its monitoring focus based on the current Operation Mode — an EFFICIENCY_STABILIZE mode prioritizes CPA and budget efficiency, while a GROWTH_SCALE mode focuses on impression share and conversion volume.
Command definitions live in .claude/commands/. See strategy-context.md for details on the strategy files, and skills/mureo-workflows/SKILL.md for the full Operation Mode reference.
mureo is designed to work alongside other MCP servers in the same client session. For example, you can configure a GA4 MCP server next to mureo so that workflow commands like /daily-check and /budget-rebalance can incorporate analytics data into their analysis.
mureo’s workflow commands check for external tool availability opportunistically — if a GA4 or other MCP server responds, the agent uses that data; if not, the command proceeds with mureo’s own data. There is no hard dependency on any external MCP server.
For detailed setup instructions, supported platforms, and configuration examples, see integrations.md .
The Google Ads customer ID is a 10-digit number (e.g., "1234567890"). Dashes are automatically stripped.
The Meta Ads account ID must start with act_ (e.g., "act_1234567890").
status_filter: Filter by entity status ("ENABLED", "PAUSED", etc.)
period: Time range for reports ("LAST_7_DAYS", "LAST_30_DAYS" for Google Ads; "today", "yesterday", "last_7d", "last_30d" for Meta Ads)
limit: Maximum number of results to return (Meta Ads, default: 50)
The keywords parameter for google_ads.keywords.add and google_ads.negative_keywords.add is an array of objects:
{ "text" : "running shoes" , "match_type" : "BROAD" },
{ "text" : "best running shoes" , "match_type" : "PHRASE" },
{ "text" : "nike running shoes" , "match_type" : "EXACT" }
match_type defaults to "BROAD" if omitted.
The google_ads.ads.create tool accepts headlines and descriptions arrays:
"customer_id" : "1234567890" ,
"ad_group_id" : "111222333" ,
"headlines" : [ "Buy Running Shoes" , "Free Shipping" , "Best Prices" ],
"descriptions" : [ "Shop our collection of running shoes." , "Free returns on all orders." ],
"final_url" : "https://example.com/shoes"
Headlines: 3-15 items. Descriptions: 2-4 items.
To create a display campaign, pass channel_type: "DISPLAY" to google_ads.campaigns.create:
"customer_id" : "1234567890" ,
"name" : "Brand Display Campaign" ,
"channel_type" : "DISPLAY" ,
"bidding_strategy" : "MAXIMIZE_CONVERSIONS" ,
Then create an RDA via google_ads.ads.create_display. Local image file paths are uploaded automatically before the ad is created:
"customer_id" : "1234567890" ,
"ad_group_id" : "111222333" ,
"headlines" : [ "Run Faster" , "Train Smarter" ],
"long_headline" : "The shoes that changed how athletes train" ,
"descriptions" : [ "Cushioning tested by Olympic runners." , "Free 30-day returns." ],
"business_name" : "Acme Athletics" ,
"marketing_image_paths" : [ "/path/to/marketing-1200x628.jpg" ],
"square_marketing_image_paths" : [ "/path/to/square-1200x1200.jpg" ],
"logo_image_paths" : [ "/path/to/logo.png" ],
"final_url" : "https://example.com/shoes"
Constraints (per the Google Ads API):
Headlines: 1-5 items, each ≤30 display width
Long headline: required, ≤90 display width
Descriptions: 1-5 items, each ≤90 display width
Business name: required, ≤25 display width
Marketing images (1.91:1): 1-15 files, 3+ recommended for delivery quality
Square marketing images (1:1): 1-15 files, 3+ recommended
Logo images: optional, up to 5
The target ad group must belong to a DISPLAY campaign (mureo verifies this before any upload)
If image upload fails partway through or the ad creation fails after all uploads succeed, an RDAUploadError is raised that includes the resource names of any orphaned uploaded assets so they can be cleaned up.
All tools return TextContent with JSON-serialized results. The JSON structure varies by tool but follows a consistent pattern:
"text" : "{ \" campaigns \" : [{ \" id \" : \" 123 \" , \" name \" : \" Brand \" , ...}]}"
The text field contains a JSON string that your agent should parse.
If credentials are missing, tools return a descriptive error message (not an exception):
"text" : "Authentication credentials not found. Set environment variables or ~/.mureo/credentials.json."
API errors (rate limits, invalid parameters, etc.) are caught by the @api_error_handler decorator and returned as text:
"text" : "API Error: Meta API request failed (status=400, path=/act_123/campaigns)"
Missing required parameters raise ValueError, which the MCP protocol surfaces to the client:
ValueError: Required parameter customer_id is not specified
Google Ads : Uses gRPC with automatic retry built into the SDK.
Meta Ads : mureo monitors the x-business-use-case-usage response header and automatically retries on HTTP 429 with exponential backoff (up to 3 attempts).
AI agents can issue tool calls at high speed, which risks hitting API rate limits and triggering temporary bans. mureo includes a built-in throttling layer (mureo/throttle.py) that transparently rate-limits all outgoing API requests.
Platform QPS Burst Hourly Cap Google Ads 10 5 — Meta Ads 20 10 50,000 Search Console 5 5 —
The throttler uses a token bucket algorithm combined with a rolling hourly cap (Meta Ads only). When the bucket is empty, the request awaits until a token becomes available — no errors are raised and no tool calls are dropped.
Each platform has a module-level singleton throttler that is shared across all MCP tool calls in the same server process. No user configuration is required; throttling is always active.