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 →
User asks why Meta/Facebook/Instagram performance dropped or changed, what happened to their ROAS/CTR/CPM, or wants to understand why a metric changed during a specific period.
This tool analyzes why a specific metric changed during a specified period by comparing it to historical baselines and identifying contributing factors. It detects Meta-specific causes including creative fatigue, audience saturation, placement mix shifts, and auction competition.
Returns:
When to use this tool:
Parameters:
Execution time: 3-8 seconds (statistical analysis across multiple periods) Data source: campaign_daily_metrics + meta_placement_daily_metrics + meta_ad_creative_metrics tables
Contributing Factors Detected:
Severity Levels:
<15% deviation): Within normal variationSimilar Historical Periods: Finds past periods with comparable deviations to provide context (e.g., “similar drop occurred during Black Friday 2024”)
Best for:
curl --request POST \
--url https://api.adspirer.ai/api/v1/tools/explain_meta_anomaly/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"arguments": {
"ad_account_id": "string",
"metric": "ctr",
"period_end": "string",
"period_start": "string",
"raw_data": false
}
}
'{
"data": {
"quota": {
"limit": 150,
"period_end": "2026-05-01",
"tier": "plus",
"used": 42
},
"text": "(tool-specific textual output for explain_meta_anomaly)"
},
"success": true,
"tool": "explain_meta_anomaly"
}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.
Input schema for Meta anomaly explanation analysis
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/explain_meta_anomaly/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"arguments": {
"ad_account_id": "string",
"metric": "ctr",
"period_end": "string",
"period_start": "string",
"raw_data": false
}
}
'{
"data": {
"quota": {
"limit": 150,
"period_end": "2026-05-01",
"tier": "plus",
"used": 42
},
"text": "(tool-specific textual output for explain_meta_anomaly)"
},
"success": true,
"tool": "explain_meta_anomaly"
}