← Back to AgentShield
AI Agent Spend Risk Calculator
See your financial exposure in real time. No signup required.
Projected monthly cost—
Worst-case daily cost (runaway)—
Projected monthly overage—
Budget utilization—
Recommended Firewall Rules
Protect Your Agents in 60 Seconds
Your risk score: —.
AgentShield Dev prevents this for $19/month. 14-day free trial. No credit card required.
Start 14-Day Free Trial →
Or self-host for free (MIT license, 60-second deploy)
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);
});
}