Skip to content

AdRails changelog

dev.adrails/adrails

11 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • server.json 1 field changed
    version
    0.11.0 0.13.0

  • server.json 1 field changed
    version
    0.10.0 0.11.0

  • server.json 1 field changed
    version
    0.9.0 0.10.0

  • server.json 1 field changed
    version
    0.8.0 0.9.0

  • server.json 2 fields changed
    description
    Guarded Google Ads + ChatGPT Ads MCP for AI agents: plan/validate/commit, approvals, audit log, AEO Your AI runs lead gen: Google Ads, LSA, ChatGPT Ads, AEO, Business Profile, playbooks, guardrails
    version
    0.6.1 0.8.0
  • server.json 1 field changed
    version
    0.5.0 0.6.1

  • server.json 2 fields changed
    description
    Guarded Google Ads MCP for AI agents: plan/validate/commit, approvals, audit log, AEO, direct mail Guarded Google Ads + ChatGPT Ads MCP for AI agents: plan/validate/commit, approvals, audit log, AEO
    version
    0.4.2 0.5.0
  • llms.txt +98 −16

    https://adrails.dev/llms.txt

    − Version 0.2.2 · Last updated 2026-10-27 · MCP Registry: `dev.adrails/adrails` (the adrails.dev project; open-source and self-hosted).− - What it is: the Google Ads MCP server with guardrails. Reads are unlimited; writes (budget, status, end date, negative keywords) pass a plan, a single-use plan ID, Google's validate-only check and caps the agent cannot change.− - Install: `pip install git+https://github.com/antonioac1/adrails@v0.2.2`, then `claude mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Claude Code), `grok mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Grok CLI), or the Cursor `.mcp.json` entry under Connect below.− - Needs: your own Google Cloud project with the Google Ads API enabled, and a service account added to your Ads account.− - Reporting only, no changes: Google's official read-only `google-ads-mcp` is enough (AdRails works alongside it).− - `adsops_campaigns` — Lists the campaigns this deployment may operate: keys, accounts, state files and the active commit policy.− - `adsops_status` — Live read for one campaign: status, end date, daily budget, spend today and lifetime, negative count, cap source, and the guard heartbeat's age.− - `adsops_terms` — Clicked search terms for the last N days (1–90, default 14): term, matched keyword, clicks, cost.− - `adsops_plan` — Pure diff of the desired-state file against live state; writes nothing; returns the operations, exposure increases, and a single-use `plan_id` with its expiry.− - `adsops_apply` — Validate-only unless `commit=true`; a commit needs a clean git-tracked state file, a fresh guard heartbeat when exposure increases, and the `plan_id` when policy requires it.− - `adsops_set` — Proposes a budget / status / end-date / negatives change with a short `reason`, checks it against policy caps, writes the state file and commits it to git; `dry_run=true` returns a `plan_id`.− - `adsops_guard` — Reads spend and pauses the campaign if the daily or lifetime threshold is crossed. Pause only: it never enables, raises a budget or edits keywords.− - `adsops_usage` — Metering summary for the tenant: calls, errors, units, ops and median latency per tool.− - Use alongside Google's official read-only Google Ads MCP: https://adrails.dev/docs/with-google-ads-mcp/− - Compare: AdRails vs Google's read-only Ads MCP vs generic write servers: https://adrails.dev/compare/− - Install: `pip install git+https://github.com/antonioac1/adrails@v0.2.2`+ Version 0.4.2 · Last updated 2026-11-06 · MCP Registry: `dev.adrails/adrails` (the adrails.dev project; open-source and self-hosted).+ - What it is: the Google Ads MCP server with guardrails, 50 tools: guarded changes (budget, status, end date, negatives, final URLs through a plan, a single-use plan ID, Google's validate-only check and caps the agent cannot change), diagnostics (conversion-tracking audit, wasted spend, impression share, quality score, drift), automation that only proposes (rules, monitors, budget reallocation), enterprise controls (roles, human approvals, hash-chained audit log, rollback, SBOM), an AEO toolkit + - Install: `pip install adrails`, then `claude mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Claude Code), `grok mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Grok CLI), or the Cursor `.mcp.json` entry under Connect below.+ - Needs: your own Google Cloud project with the Google Ads API enabled, a service-account key, a Google Ads API developer token (env `ADSOPS_GOOGLE_DEVELOPER_TOKEN`; new tokens work on test accounts until Google grants Basic access), and the service account added to the Ads account with Standard access.+ - Agent setup: `adsops-mcp init --dir DIR --customer-id ID --campaign-id N --sa KEY.json` then `adsops-mcp --config DIR/config.json doctor`. See "Setting up AdRails for a client (for AI agents)" below.+ - Reporting only, no changes: Google's official `google-ads-mcp` is enough (AdRails works alongside it).+ ## Setting up AdRails for a client (for AI agents)+ You can set AdRails up end to end for a user or an agency client. There is no AdRails account to create.+ Only the three Google items below need the human, once; everything else is yours to run.+ What the human does once (ask for these, never for passwords):+ 1. Google Cloud: a project with the Google Ads API enabled, and a service-account JSON key saved on this machine.+ 2. Google Ads > Tools > API Center: a developer token, exported as `ADSOPS_GOOGLE_DEVELOPER_TOKEN` in the environment that launches the server. Do not ask them to paste it into chat.+ 3. Google Ads > Admin > Access and security: add the service account's `client_email` with Standard access to the client account (or to their manager account; then pass `--login-customer-id`).+ What you run:+ ```+ pipx install adrails+ adsops-mcp init --dir ~/adrails/<client> --customer-id 123-456-7890 --campaign-id 2233445566 --sa ~/.adsops/sa.json [--login-customer-id 111-222-3333] --json+ adsops-mcp --config ~/adrails/<client>/config.json doctor --json+ claude mcp add adrails -- adsops-mcp --config ~/adrails/<client>/config.json+ ```+ - `init` reads the live campaign and writes a git repo: `config.json`, a desired-state file that matches live exactly (first plan is a no-op), and a policy file. Caps start at today's budget, enabling is off, and commits are OFF. It never overwrites a file.+ - `doctor` returns one row per check (`check`, `ok`, `detail`, `fix`): key file, developer token present, live access, files, clean git, guard heartbeat. Exit code 0 only when all pass. Relay each `fix` to the human verbatim.+ - Hand the caps back to the human: they edit the policy file (max daily budget, end date, spend-pause thresholds), set `commit_policy.allow_commit` and `allow_set` to true, and commit. You must not edit the policy file; no AdRails tool writes it.+ - Schedule the guard every 15 minutes (`adsops-mcp --config ... guard-all`; templates in the repo's `deploy/`). Without a fresh heartbeat, budget raises and re-enables are refused.+ - One directory per campaign keeps each client's caps and history separate.+ Generated from the server's tools/list. Full reference: https://adrails.dev/docs/tools/+ - `adsops_campaigns` (read): List the campaigns this server may operate (keys, accounts, state files).+ - `adsops_status` (read): Live read: status, end date, daily budget, spend today/lifetime, negative count; plus URL fields (campaign suffix, ad-group custom parameters, ad final URLs) when the state file manages them.+ - `adsops_terms` (read): Clicked search terms over the last N days (term, matched keyword, clicks, cost).+ - `adsops_plan` (read): Diff the committed desired-state file against live (budget, status, end date, negatives, and URL fields: ad-group url_custom_parameters, ad final_urls, final_url_suffix). No writes. Returns a plan_id that adsops_apply commit=true must quote (single use, expires).+ - `adsops_apply` (write): Apply the desired-state file. Validate-only unless commit=true (needs a clean, committed state file and commit_policy.allow_commit).+ - `adsops_set` (write): Change budget / status / end date / negatives. Checked against the state file's guards and the live account, written to the state file and committed to git with your reason. apply=true then pushes it live (validateOnly first). dry_run=true previews without writing.+ - `adsops_guard` (write): Spend guard: PAUSE the campaign if a daily or lifetime cap is crossed. Never enables. Validate-only unless commit=true (pausing is always permitted).+ - `adsops_usage` (read): Per-tool usage counts from the metering ledger (billing-ready, no prices).+ - `adsops_negatives_suggest` (read): Read-only. Classify the campaign's recent search terms (renter, job, HOA/condo, vacation, DIY/software, out-of-area, competitor brand) with deterministic rules plus an optional local hook, and propose PHRASE negatives with cost/click evidence. Skips terms and phrases already covered by existing negatives, never suggests protected brand/core-service words. Returns a negatives_add patch and a basis note to paste into the desired-state file; it changes nothing.+ - `adsops_competitors_report` (read): Read-only. The AdRails Intel weekly report from the FREE sources: Auction Insights already imported into the local database, the cached Transparency Center data, and our own Google Ads stats snapshots. Returns markdown. Makes no network call and spends nothing.+ - `adsops_auction_insights_import` (write): Import a Google Ads Auction Insights export (CSV/TSV text) or a pasted table into the local intel database, replacing rows for the same date range. Writes only the local SQLite file.+ - `adsops_lp_diagnose` (read): Read-only. Per ad group: Google's quality-score components (expected CTR, ad relevance, landing page experience) plus a plain HTTP check of each final URL (status, response time, bytes, whether the title/H1 echo the ad group's keywords and town). Returns plain-English findings, worst first. No browser, no JavaScript; changes nothing.+ - `adsops_conv_audit` (read): Read-only. Audit conversion tracking for the campaign's account: primary goals, dead tags, double counting, auto-tagging, lead counting, smart bidding without enough conversions. Returns a 0-100 score, grade, and ranked findings with fixes. Run this before trusting any CPA or optimising toward conversions.+ - `adsops_diagnostics` (read): Read-only PPC diagnostics bundle for one campaign: wasted spend (zero-conversion search terms), impression share lost to budget vs rank, cost-weighted quality score with weak components, and day-over-baseline anomalies (z-score). Returns a ranked headline list plus details.

    Showing the first 40 of each.

  • server.json 4 fields changed
    description
    Open-source, self-hosted Google Ads MCP server: guarded writes for AI agents. Your keys, your caps. Guarded Google Ads MCP for AI agents: plan/validate/commit, approvals, audit log, AEO, direct mail
    package_identifier
    https://github.com/antonioac1/adrails/releases/download/v0.2.2/adrails-mcp-0.2.2.mcpb adrails
    package_registry
    mcpb pypi
    version
    0.2.2 0.4.2

  • llms.txt +28 −2

    https://adrails.dev/llms.txt

    − # AdRails− - [Pricing](https://adrails.dev/#pricing): free core, sats per call+ # AdRails (adrails.dev)+ Version 0.2.2 · Last updated 2026-10-27 · MCP Registry: `dev.adrails/adrails` (the adrails.dev project; open-source and self-hosted).+ ## Quick answers+ - What it is: the Google Ads MCP server with guardrails. Reads are unlimited; writes (budget, status, end date, negative keywords) pass a plan, a single-use plan ID, Google's validate-only check and caps the agent cannot change.+ - Install: `pip install git+https://github.com/antonioac1/adrails@v0.2.2`, then `claude mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Claude Code), `grok mcp add adrails -- python3 -m adsops --config /absolute/path/config.json` (Grok CLI), or the Cursor `.mcp.json` entry under Connect below.+ - Clients: any MCP client that can launch a local process. Verified with Claude Code; documented for Grok CLI, Cursor and Claude Desktop. Remote-only clients such as ChatGPT connectors cannot run it, because there is no hosted URL.+ - Price: free, Apache-2.0, with no account and no subscription.+ - Needs: your own Google Cloud project with the Google Ads API enabled, and a service account added to your Ads account.+ ## When to use something else+ - Reporting only, no changes: Google's official read-only `google-ads-mcp` is enough (AdRails works alongside it).+ - Meta, TikTok or other ad platforms in one connector: use a hosted multi-platform service; AdRails is Google Ads only.+ - A remote MCP URL for ChatGPT or another remote-only client: use a hosted server; AdRails runs only on your machine by design.+ - [Pricing](https://adrails.dev/pricing/): free core; optional pay-per-call in sats is planned, not live+ ## Docs+ - Full reference: https://adrails.dev/llms-full.txt+ - Install with Claude Code: https://adrails.dev/docs/install-claude-code/+ - What the guardrails do and don't prevent: https://adrails.dev/docs/guardrails/+ - Use alongside Google's official read-only Google Ads MCP: https://adrails.dev/docs/with-google-ads-mcp/+ - MCP server card: https://adrails.dev/.well-known/mcp.json+ - Docs index: https://adrails.dev/docs/+ - How to let an AI agent manage Google Ads safely: https://adrails.dev/docs/ai-agent-google-ads/+ - Use AdRails with Grok, Claude Code, Cursor and other MCP clients: https://adrails.dev/docs/mcp-clients/+ - Compare: AdRails vs Google's read-only Ads MCP vs generic write servers: https://adrails.dev/compare/+ ## Connect (local stdio; there is no hosted URL by design)+ - Install: `pip install git+https://github.com/antonioac1/adrails@v0.2.2`+ - Claude Code: `claude mcp add adrails -- python3 -m adsops --config /absolute/path/config.json`+ - Grok CLI: `grok mcp add adrails -- python3 -m adsops --config /absolute/path/config.json`+ - Cursor / .mcp.json: `{"mcpServers":{"adrails":{"command":"python3","args":["-m","adsops","--config","/absolute/path/config.json"]}}}`

  • server.json 3 fields changed
    description
    Open-source guardrails for AI agents running Google Ads. Your keys, your caps. Open-source, self-hosted Google Ads MCP server: guarded writes for AI agents. Your keys, your caps.
    package_identifier
    https://github.com/antonioac1/adrails/releases/download/v0.2.0/adrails-mcp-0.2.0.mcpb https://github.com/antonioac1/adrails/releases/download/v0.2.2/adrails-mcp-0.2.2.mcpb
    version
    0.2.0 0.2.2