Optimize budget allocation across campaigns using linear programming to maximize conversions.
⚠️ IMPORTANT: This tool retrieves READ-ONLY optimization recommendations. Safe to call multiple times. Does NOT automatically change budgets.
🎯 What This Tool Does (Performance Agent - Phase 1):
Returns detailed optimization plan:
Optimization Algorithm: Uses scipy linear programming with constraints:
<= ±max_change_percentage (avoid drastic shifts)Target ROAS Resolution (3-tier priority):
Configuration Parameters:
Execution time: 1-5 seconds (depends on campaign count) Data source: campaign_daily_metrics table (updated nightly)
Use this tool when:
📊 AFTER calling this tool, help the user understand:
Campaign Actions:
< target)Expected Impact:
Example Interpretation: “Implementing this optimization will increase your conversions by 45 (+18.8%) without spending more money. You should scale ‘Brand - Exact’ campaign by 3,000/month.”
Implementation Steps:
Important Notes:
<7 days)Visualization Tip: For 5+ campaigns, suggest creating a grouped bar chart showing current vs optimized budgets side-by-side.
Best Practices:
💬 Community: For optimization discussions, visit our Discord: https://discord.gg/dH3Qt4YS
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 budget allocation optimization
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.