Nothing leaves your machine
Runs locally against your own Google Cloud project and credentials. No hosted proxy, no token custody, no account to create with us. You can read every line.
AdRails lets Claude, Cursor and your own agents operate Google Ads around the clock, inside caps you set, on your machine, with your own keys. Agents move fast. The rails stay fixed.
# the agent wants to scale a winning campaign ▸ adsops_set campaign=acme_search daily_budget_usd=40 dry_run=true ✗ refused daily_budget_usd 40.0 outside guard range (policy max 25) ▸ adsops_set campaign=acme_search daily_budget_usd=22 dry_run=true reason="winning terms, CPA under target" ✓ planned budget 18.00 → 22.00 · exposure: budget up · plan_id 9f2c…e41a (single use · 15 min) ▸ adsops_set … apply=true plan_id=9f2c…e41a ✓ guard alive 6 min ago · ✓ validated by Google · ✓ committed · git a71d9c0 "winning terms, CPA under target"
Agents are great at ad ops: search terms, negatives, budgets, pacing, 24/7. They're also one bad loop away from a burned budget. AdRails turns "the AI can touch my ad account" from a leap of faith into a policy you wrote.
Runs locally against your own Google Cloud project and credentials. No hosted proxy, no token custody, no account to create with us. You can read every line.
Budget limits, end dates and spend thresholds live in a policy file that no AdRails tool can write. Every real change needs a fresh, single-use plan ID.
The executor is free and open source. Optional services, like an independent AI second opinion before a commit, are paid per call in sats over Lightning.
Every change is a diff against the live account, checked against your policy, then committed exactly once. Reading is free and unlimited; writing walks the rails.
Not prompts. Not "please be careful." Each one is enforced by the executor and covered by its test suite: 393 checks today.
Max daily budget, end date, daily and lifetime pause thresholds, ops per run.
A commit must quote the exact plan it was shown. Changed, reused or expired plans are refused.
Budget raises, re-enables and end-date extensions are blocked while the guard heartbeat is stale.
A scheduled guard pauses on threshold breach. It can never enable or raise anything.
Google checks the identical payload in validate-only mode first. Nothing lands if that fails.
If Google times out mid-commit, AdRails re-reads the account and reports what actually landed.
Agent changes are committed to git with their stated reason, and every call is metered and audited.
List the keywords that pay your bills. No negative keyword that would block them gets through.
We'd rather lose a sale than sell you a fantasy.AdRails reduces risk. It doesn't remove it. Here's exactly where the edges are, so you can decide with your eyes open. You run it at your own risk; you own your account and your spend.
No subscriptions, no seats, no account with us. Pay only for the calls your agents actually make, in sats over Lightning.
A Google Cloud project with the Google Ads API enabled, and a service account added to your Ads account.
Caps, end date, pause thresholds, protected terms. This is the file no AdRails tool can write.
Add AdRails to Claude Code (or any MCP client) and schedule the guard from deploy/.
It reads freely and writes through plan → prove → commit. You read the git log.
{
"mcpServers": {
"adrails": {
"command": "python3",
"args": ["-m", "adsops", "--config", "adrails.json"]
}
}
}
{
"customer_id": "123-456-7890", "campaign_id": 9876543210,
"guards": { "max_daily_budget_usd": 25, "max_end_date": "2026-12-31",
"daily_spend_pause_usd": 60, "lifetime_spend_pause_usd": 1000,
"max_ops_per_run": 50 },
"allow_enable": true, "require_plan_id": true, "max_guard_age_min": 30,
"protected_terms": ["your brand", "your best keyword"]
}
AdRails is an open-source (Apache-2.0) MCP server that lets AI agents such as Claude Code or Cursor operate Google Ads accounts inside caps that no AdRails tool can change. It runs on your own machine with your own Google credentials.
Google's official google-ads-mcp server is read-only. AdRails adds guarded writes: budget, status, end-date and negative-keyword changes go through a policy file the agent cannot write, a single-use plan ID, Google validate-only checks and a pause-only scheduled guard. It reduces risk; it does not remove it.
No. AdRails caps what it submits, but Google can deliver up to 2x the average daily budget on a given day and reporting is delayed. It is a threshold with automatic pause attempts, not a hard spend ceiling.
No. AdRails runs locally against your own Google Cloud project. There is no hosted proxy and no token custody, which also follows Google's policy that each business uses its own Cloud project and access.
The core executor is free forever under Apache-2.0. Optional services, such as an independent AI review of a change plan before it commits, will be paid per call in sats over Lightning. There are no subscriptions.
Any MCP client that runs local stdio servers. It's verified with Claude Code and designed for Cursor, Claude Desktop and custom agents.
Open source. Your keys. Your caps. Paid per call in sats.