New: Adspirer is now an official Claude plugin. Search "adspirer" in Claude Code or Cowork to install. See what's new β
New: Adspirer is now an official Claude plugin. Search "adspirer" in Claude Code or Cowork to install. See what's new β
Analyze wasted ad spend and identify campaigns losing money or underperforming.
β οΈ IMPORTANT: This tool retrieves READ-ONLY data. Safe to call multiple times.
π― What This Tool Does (Performance Agent - Phase 1):
< 1.0x)< target)Returns detailed analysis:
< 1.0)Target ROAS Resolution (3-tier priority):
Severity Levels:
< 0.5x (losing money severely)< 1.0x (unprofitable/breakeven)< target (profitable but underperforming)Parameters:
Execution time: 1-3 seconds (cached database query) Data source: campaign_daily_metrics table (updated nightly)
Use this tool when:
π AFTER calling this tool, help the user understand:
Wasted vs. Underperforming:
< 1.0, youβre losing money)Example:
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.
Visualization Tip: For 10+ campaigns, suggest creating a treemap visualization to show wasted spend by campaign size.
π¬ Community: For optimization discussions, visit our Discord: https://discord.gg/dH3Qt4YS
curl --request POST \
--url https://api.adspirer.ai/api/v1/tools/analyze_wasted_spend/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"arguments": {
"date_range": "string",
"end_date": "string",
"lookback_days": 30,
"raw_data": false,
"start_date": "string",
"target_roas": 1
}
}
'{
"data": {
"quota": {
"limit": 150,
"period_end": "2026-05-01",
"tier": "plus",
"used": 42
},
"text": "(tool-specific textual output for analyze_wasted_spend)"
},
"success": true,
"tool": "analyze_wasted_spend"
}Documentation Index
Fetch the complete documentation index at: https://www.adspirer.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
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.
Show child attributes
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.
Was this page helpful?
curl --request POST \
--url https://api.adspirer.ai/api/v1/tools/analyze_wasted_spend/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"arguments": {
"date_range": "string",
"end_date": "string",
"lookback_days": 30,
"raw_data": false,
"start_date": "string",
"target_roas": 1
}
}
'{
"data": {
"quota": {
"limit": 150,
"period_end": "2026-05-01",
"tier": "plus",
"used": 42
},
"text": "(tool-specific textual output for analyze_wasted_spend)"
},
"success": true,
"tool": "analyze_wasted_spend"
}