find_scaling_opportunities
Identify high-performing ad campaigns with sufficient ROI and conversion volume to allocate more budget for scaling.
Instructions
Find campaigns ready for scaling based on ROI and conversion volume.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| min_roi | No | Minimum ROI percentage (default: 50) | |
| min_conversions | No | Minimum conversions (default: 10) | |
| date_from | No | Start date | |
| date_to | No | End date |
Implementation Reference
- src/propellerads_mcp/server.py:787-821 (handler)The handler logic for 'find_scaling_opportunities' retrieves active campaigns, fetches statistics, calculates ROI/conversions, and filters campaigns based on the provided criteria.
elif name == "find_scaling_opportunities": campaigns = client.list_campaigns(status="active") if not campaigns: return "No active campaigns found." min_roi = args.get("min_roi", 50) min_conv = args.get("min_conversions", 10) opportunities = [] for c in campaigns: stats = client.get_campaign_statistics( c["id"], date_from=args.get("date_from"), date_to=args.get("date_to"), ) if stats: metrics = calculate_metrics(stats) conv = metrics.get("conversions", 0) or 0 roi = metrics.get("roi", 0) or 0 if conv >= min_conv and roi >= min_roi: opportunities.append({**c, **metrics}) if not opportunities: return f"No scaling opportunities found (min ROI: {min_roi}%, min conversions: {min_conv})." opportunities.sort(key=lambda x: x.get("roi", 0), reverse=True) lines = ["# Scaling Opportunities\n\n"] lines.append(f"Criteria: ROI >= {min_roi}%, Conversions >= {min_conv}\n\n") for c in opportunities: lines.append( f"### {c.get('name')} (ID: {c.get('id')})\n" f"- ROI: {format_percentage(c.get('roi'))}\n" f"- Conversions: {c.get('conversions', 0)}\n" - The Tool definition and schema for 'find_scaling_opportunities' specifying input parameters (min_roi, min_conversions, date_from, date_to).
Tool( name="find_scaling_opportunities", description="Find campaigns ready for scaling based on ROI and conversion volume.", inputSchema={ "type": "object", "properties": { "min_roi": { "type": "number", "description": "Minimum ROI percentage (default: 50)", }, "min_conversions": { "type": "integer", "description": "Minimum conversions (default: 10)", }, "date_from": {"type": "string", "description": "Start date"}, "date_to": {"type": "string", "description": "End date"}, }, }, ),