← Back to AgentShield

AI Agent Spend Risk Calculator

See your financial exposure in real time. No signup required.

Risk Score
Projected monthly cost
Worst-case daily cost (runaway)
Projected monthly overage
Budget utilization

Recommended Firewall Rules

Share Your Score

function calculate() { const agents = parseFloat(document.getElementById('agents').value) || 0; const amount = parseFloat(document.getElementById('amount').value) || 0; const freq = parseFloat(document.getElementById('freq').value) || 0; const budget = parseFloat(document.getElementById('budget').value) || 0; const alwaysOn = document.getElementById('always-on').checked; const hoursPerDay = alwaysOn ? 24 : 8; const daysPerMonth = 30; const monthlyCost = agents * amount * freq * hoursPerDay * daysPerMonth; const worstDaily = agents * amount * freq * hoursPerDay * 10; // 10x runaway const overage = Math.max(0, monthlyCost - budget); const utilization = budget > 0 ? (monthlyCost / budget * 100) : 0; // Risk score calculation let score = 0; if (budget > 0) score += Math.min(60, (monthlyCost / budget) * 30); score += Math.min(25, (agents * freq * amount) / 10); score += Math.min(15, worstDaily / Math.max(1, budget) * 5); score = Math.min(100, Math.round(score)); const scoreEl = document.getElementById('score'); const labelEl = document.getElementById('score-label'); scoreEl.textContent = score + '/100'; if (score < 33) { scoreEl.style.color = '#00d4aa'; labelEl.textContent = 'LOW RISK'; } else if (score < 66) { scoreEl.style.color = '#ffa502'; labelEl.textContent = 'MODERATE RISK'; } else { scoreEl.style.color = '#ff4757'; labelEl.textContent = 'HIGH RISK'; } document.getElementById('monthly-cost').textContent = '$' + monthlyCost.toFixed(2); document.getElementById('worst-daily').textContent = '$' + worstDaily.toFixed(2); const ovEl = document.getElementById('overage'); ovEl.textContent = '$' + overage.toFixed(2); ovEl.style.color = overage > 0 ? '#ff4757' : '#00d4aa'; document.getElementById('utilization').textContent = utilization.toFixed(0) + '%'; // Generate recommended config const rules = []; if (amount > 0) rules.push({id: "rule_001", type: "transaction_limit", priority: 1, params: {max_amount: +(amount * 5).toFixed(2)}, action: "BLOCK"}); if (budget > 0 && agents > 0) rules.push({id: "rule_002", type: "daily_total", priority: 2, params: {max_daily: +((budget / 30) * 0.8).toFixed(2)}, action: "BLOCK"}); if (freq > 0) rules.push({id: "rule_003", type: "velocity", priority: 3, params: {window_minutes: 60, max_count: Math.ceil(freq * 1.5)}, action: "FLAGGED"}); rules.push({id: "rule_004", type: "merchant_allowlist", priority: 4, params: {allowed: ["openai-api", "anthropic-api", "stripe-api"]}, action: "BLOCK"}); document.getElementById('config-json').textContent = JSON.stringify(rules, null, 2); const shareText = 'My AI agent spend risk score: ' + score + '/100. Projected monthly cost: $' + monthlyCost.toFixed(2) + '. Overage: $' + overage.toFixed(2) + '. Run your own check at agentshield.dev'; document.getElementById('share-text').value = shareText; document.getElementById('results').classList.add('show'); // Show trial CTA with risk score const cta = document.getElementById('trial-cta'); const ctaScore = document.getElementById('risk-score-display'); if (cta && ctaScore) { ctaScore.textContent = score + '/100'; ctaScore.style.color = score >= 66 ? '#ff4757' : score >= 33 ? '#ffa502' : '#00d4aa'; cta.style.display = 'block'; } } function copyShare() { const textarea = document.getElementById('share-text'); textarea.select(); navigator.clipboard.writeText(textarea.value).then(() => { const btn = document.querySelector('.share-btn'); const orig = btn.textContent; btn.textContent = 'Copied!'; setTimeout(() => btn.textContent = orig, 2000); }); }