User asks about Meta/Facebook/Instagram ad spend efficiency, wasted money, underperforming campaigns, placement optimization, or creative fatigue.
This tool identifies Meta Ads campaigns and placements that are wasting money by performing below target ROAS or below breakeven (ROAS < 1.0). It extends the base wasted spend detector with Meta-specific features:
Returns:
< 1.0 = actual losses)<= ROAS < target = opportunity cost)When to use this tool:
Parameters:
Execution time: 2-5 seconds (cached database query with analysis) Data source: campaign_daily_metrics + meta_placement_daily_metrics + meta_ad_creative_metrics tables
Key definitions:
< 1.0): Actual money lost - for every 1<= ROAS < target): Profitable but below target - opportunity costMeta-specific placement optimization:
Quick Actions (IMPORTANT — read severity context first):
⚠️ NEVER say “pause” for a campaign that has conversions. Say “review” or “reduce budget” instead. ⚠️ NEVER recommend pausing a campaign in LEARNING phase. ⚠️ If ALL campaigns are LEARNING or INSUFFICIENT_DATA, tell the user their account is too new for waste analysis and recommend checking back in 2 weeks. ⚠️ Consider campaign objective: brand awareness campaigns will not have ROAS data. This is normal. ⚠️ When data confidence is MEDIUM or LOW, soften all recommendations and add verification prompts.
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input schema for Meta wasted spend analysis with placement and fatigue detection
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.