For the person who runs the ads and answers for the numbers.
You already have an agent that can read Google Analytics and Search Console and could touch the ads account. You could let it. The problem is that nobody can say on Tuesday what it did on Monday night, or whether it helped. Treat it the way you would a new hire on the marketing team: a number to be judged by, keys to some doors and not others, a logbook, and feedback. Here is what that looks like across one week.
Everything below is an example. Nothing on this page is a customer.
Monday. Give it a number.
A person on the team is judged by something: cost per lead, organic clicks to the signup page, demo requests. You declare that number as the goal, in the app or by answering the agent when it asks. The gateway reads it at once for a baseline and keeps reading it every twelve hours.
Ads move in days and rankings in weeks, so the goal carries a settle time. Credit for a change lands in the interval where the effect shows, not the one where the button was pressed.
Example, not real data.
Tuesday. Let it read everything from day one.
Every new account starts with Marketing Reporting, our server for Google Analytics 4, Search Console and Bing Webmaster. Each person signs in with their own Google account, with read scopes only. From then on the agent can pull sessions by landing page, queries by position, a funnel from session to purchase, or last month against the month before, and ask whether a difference in conversion rate is more than noise.
Claude, Codex, Cursor and ChatGPT connect with one URL. What the agent pulls is in the project's log, readable by the team, exportable whenever you want it.
Defaults as shipped.
Wednesday. Decide what it may change, and by whose rule.
The ads account is where the agent can do damage, so that is where the rule is written. Connect your ads server as a custom entry, then narrow it with a preset: one customer account pinned into every call, pause and budget tools allowed, delete tools absent from the catalog. Assign that preset to the person whose agent will run overnight.
The agent has no permissions of its own. It runs on that person's token and gets that person's surface. Revoke the token and it stops at the next call.
maria's agent may pause campaigns and move budgets on one customer account. everyone else in marketing reads. nobody deletes.
Example, not real data.
Thursday. The first time it is told no.
The agent wants to pause brand search again. The last two times that was done under this goal, cost per lead went up in the intervals that followed. Instead of running, the call comes back refused with that evidence, and the agent is told to put it to Maria. A colleague would say: we tried that in March. This is the same, with the dates.
Maria can say yes. Resend the same call with the acknowledgement and it runs, stamped in the log as acknowledged. The brake is an observation, not a verdict, and it never locks anyone out.
"ads.pauseCampaign" has been called this way before on this goal. The goal moved AWAY from its target over 2 of the 3 measurement interval(s) those calls sat in. Nothing about this call is invalid. This is disconfirming evidence from this account's own history. Put it to the user and let them decide.
acknowledgedEvidence: "e3f19c4a"Example, not real data.
Friday. What the week taught it.
Every write the agent made sits between two readings of cost per lead, and shares that interval's movement. By Friday those observations are rules it is handed before it acts: do, avoid, check, expect, each with a count and a date. A model writes the sentence; the count and the date come from the log.
A new hire learns the account this way too, except that theirs is in their head and this one is in a log you can read. Where there is not enough history the answer is "nothing yet", with the threshold that was not met.
cost per lead up · 12 actions (last 2026-08-14) · likely mechanical
cost per lead down · 9 actions (last 2026-08-27) · plausibly causal
confounded on review · association, not causal
observed 2 times · needs 3 distinct decision-days
observational, not causalExample, not real data.
What it will not do.
Start on a Monday.
Sign in with Google. A account and a project with Marketing Reporting exist at once; the goal is the first thing to declare.