Skip to main content
Glama
Pauesome

Ads Analytics MCP

by Pauesome

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TIKTOK_APP_IDNoTikTok Marketing API app ID
TIKTOK_APP_SECRETNoTikTok Marketing API app secret
GOOGLE_ADS_CLIENT_IDNoGoogle Ads OAuth client ID
GOOGLE_ADS_CLIENT_SECRETNoGoogle Ads OAuth client secret
GOOGLE_ADS_DEVELOPER_TOKENNoGoogle Ads API developer token

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_clientsA

Lists all configured accounts available in this MCP server. For each account, shows the ID (used in other tools), name, and which platforms are configured (google_ads, meta_ads, tiktok_ads). Call this first when you need to know which client_id to pass to other tools.

get_google_ads_campaign_performanceA

Retrieves Google Ads campaign performance metrics for a client. Returns normalized metrics: spend, impressions, clicks, CTR, CPC, CPM, conversions, CPA, conversion value, ROAS, plus bidding_strategy_type and channel_type. Default aggregation = 'campaign' (one row per campaign over the full period). Pass aggregation='campaign_day' for trend analysis or 'day' for account-level timeseries. Supports filtering by date range, campaign IDs, and campaign status. Use list_clients to see available client IDs.

get_google_ads_search_termsA

Retrieves search term performance data from Google Ads. Identifies wasted spend: terms with budget consumed but zero conversions. Returns total_spend, wasted_spend, and wasted_spend_pct at the response level. Use zero_conversions_only=true to focus exclusively on wasted spend. Use min_spend to filter out negligible terms. Use list_clients to see available client IDs.

get_google_ads_keywordsA

Retrieves keyword performance and Quality Score data from Google Ads. Returns quality_score_distribution summarising QS spread across the account. Quality Score 1–4 keywords are flagged for optimization — low QS raises CPC. Use min_impressions=100 to focus on keywords with enough data for reliable QS. Use list_clients to see available client IDs.

get_google_ads_impression_shareA

Retrieves impression share metrics for Search and Performance Max campaigns. Shows what fraction of eligible impressions each campaign is winning. Breaks down impression share loss into budget-lost vs rank-lost. estimated_missed_impressions shows the scale of the opportunity. Budget-lost IS > 20% = increase budget. Rank-lost IS > 30% = improve bids/QS. Use list_clients to see available client IDs.

get_google_ads_hourly_performanceA

Returns Google Ads performance broken down by hour-of-day (0–23) and day-of-week (MONDAY–SUNDAY) per campaign. Use for dayparting / ad-schedule analysis — identify when ads perform best and worst, inform ad_schedule bid adjustments. Metrics per bucket: impressions, clicks, spend, conversions, conversion_value, ctr, cpc, cpa, roas. Hours are in the advertiser's time zone as configured in Google Ads.

get_meta_campaign_performanceA

Retrieves Meta (Facebook/Instagram) campaign performance metrics for a client. Returns normalized metrics: spend, impressions, clicks, reach, CTR, CPC, CPM, conversions, CPA, conversion value, ROAS. Supports filtering by date range, ad account IDs, campaign IDs, and campaign status. Data is returned at campaign × day granularity. Use list_clients to see available client IDs.

get_meta_hourly_performanceA

Returns Meta Ads performance broken down by hour-of-day (0–23) and day-of-week (MONDAY–SUNDAY) per campaign. Use for dayparting / ad-set scheduling analysis — identify when ads perform best and worst in the advertiser's audience time zone. Metrics per bucket: impressions, clicks, spend, conversions (from client.meta_ads.conversion_action), conversion_value, ctr, cpc, cpa, roas. Day-of-week is derived client-side from the Meta insights date; hours are buckets from Meta's hourly_stats_aggregated_by_audience_time_zone breakdown.

get_meta_opportunity_scoreA

Returns Meta's account-level Opportunity Score (0–100) plus the active recommendations queue (consolidation, Advantage+, audience expansion, creative variants, etc.). Wraps the /act_/recommendations Marketing API edge — same data Meta's official MCP surfaces, but using the client's stored access token. Each recommendation is normalized: { recommendation_type, level, entity_id, title, description, estimated_lift, status }. Use to (a) score an account quickly, (b) feed concrete recommendations into a Meta audit, (c) prioritise the highest-lift fixes.

get_meta_auction_rankingsA

Returns Meta's three auction-ranking labels per ad: quality_ranking, engagement_rate_ranking, conversion_rate_ranking — each one of ABOVE_AVERAGE, AVERAGE, BELOW_AVERAGE_35/20/10, or UNKNOWN. Computes below_average_count (0–3) and sorts the worst offenders to the top — 2+ below-average rankings is a creative-refresh trigger. Filters out ads under min_impressions (default 1000) since Meta only assigns labels above that volume. Same data Meta's MCP ads_insights_auction_ranking_benchmarks exposes; runs against /act_/insights at level=ad.

get_meta_anomaly_signalA

Detects daily anomalies in Meta campaign performance using a rolling-baseline Z-score model — equivalent in intent to Meta's MCP ads_insights_anomaly_signal but computed locally from /insights daily data (no new endpoint). For each campaign × metric (CTR, CPM, CPC, CPA, spend, conversions), evaluates the trailing days against a baseline of the prior baseline_days (default 14). Flags any day with |z| ≥ z_threshold (default 2.0). Severity: |z| ≥ 2× threshold = severe, ≥ 1.5× = moderate, otherwise mild. Direction: spike vs drop. Sorted severity → most-recent → |z|. Use to triage 'something changed yesterday' before doing a full audit.

get_tiktok_campaign_performanceA

Retrieves TikTok Ads campaign performance metrics for a client. Returns normalized metrics: spend, impressions, clicks, CTR, CPC, CPM, conversions, CPA, conversion value, ROAS. Supports filtering by date range, advertiser IDs, campaign IDs, and campaign status. Data is returned at campaign × day granularity from the TikTok Marketing API /report/integrated/get/ endpoint.

get_tiktok_hourly_performanceA

Returns TikTok Ads performance broken down by hour-of-day (0–23) and day-of-week (MONDAY–SUNDAY) per campaign. Source: /report/integrated/get/ with stat_time_hour dimension. Hours are in the advertiser's account time zone. Use for dayparting / ad-schedule analysis. TikTok-specific peaks: lunch (12–14) and evening (19–23) in Spain.

get_tiktok_ad_performanceA

Returns TikTok Ads performance at the ad level (campaign → ad group → ad). Includes the four core video-engagement signals: video_play_actions, video_watched_2s, video_watched_6s, average_video_play_per_user. video_watched_2s / impressions = hold rate (best proxy for hook strength on TikTok). 2s hold < 30% = creative-refresh signal.

get_tiktok_auction_rankingsA

Returns per-ad TikTok ranking signals: video_quality_score (0–10), engagement_rate_ranking, conversion_rate_ranking — each one of ABOVE_AVERAGE / AVERAGE / BELOW_AVERAGE / UNKNOWN. Computes below_average_count (0–2) and sorts the worst offenders to the top — 1+ below-average rankings is a creative-refresh trigger on TikTok (the platform burns creatives faster than Meta). Filters out ads under min_impressions (default 1000). When a tier doesn't expose video_quality_score the field is null and the row still surfaces ranking labels.

get_tiktok_anomaly_signalA

Detects daily anomalies in TikTok campaign performance using the same rolling-baseline Z-score model as get_meta_anomaly_signal. For each campaign × metric (CTR, CPM, CPC, CPA, spend, conversions), evaluates trailing days against a baseline of the prior baseline_days (default 14). Flags any day with |z| ≥ z_threshold (default 2.0). Severity: |z| ≥ 2× threshold = severe, ≥ 1.5× = moderate, otherwise mild. Sorted severity → most-recent → |z|.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 16 tools

Disambiguation5/5

Each tool is scoped by a platform prefix (google_ads/meta/tiktok) plus a specific entity or metric, so even parallel tools like get_meta_hourly_performance and get_tiktok_hourly_performance or the two anomaly signals are clearly distinguishable by platform and purpose. There is no meaningful overlap where an agent could reasonably misselect.

Naming Consistency5/5

All data tools follow the consistent get_{platform}_{metric_or_entity} pattern (e.g. get_google_ads_keywords, get_meta_auction_rankings, get_tiktok_anomaly_signal). The single discovery tool list_clients deviates slightly but is a natural, predictable exception with no competing convention.

Tool Count4/5

16 tools sits at the upper edge of the ideal range, but the count is justified: three ad platforms each get parallel coverage of performance, hourly, and diagnostics. It is slightly heavy but every tool maps to a concrete analytical need rather than being filler.

Completeness4/5

The surface covers a strong analytics lifecycle across all three platforms: campaign performance, dayparting/hourly, auction rankings, anomaly detection, plus discovery. Minor asymmetries exist (Google Ads has no auction-rankings or anomaly tool, and Meta lacks ad-level performance), but these are workaroundable gaps rather than dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues