Lock in $67
Verification

Meta Ads MCP data accuracy: catching the numbers Claude gets wrong

Nothing gets suspended when this happens. You just make a decision on bad information, which is worse in a slower way.

Espen Opdahl Published 6 min read
Two precision measuring rules laid one above the other, their graduations not quite aligning.

Yes, it will sometimes give you a number that is wrong — and it will sound completely certain doing it. Three habits catch nearly all of it: state the date window yourself, ask it to show what it queried, and spot-check two figures against Ads Manager before you act. None of them require the model to be honest about its own limits, which is the point.

This is the failure mode that actually costs people money with an AI in the loop. Not a ban. Not a rogue budget change. A confidently wrong figure that you believe.

What it looks like

The tell is almost never a wild number. A wild number you would catch. The tell is a plausible number that is subtly off:

  • A spend total for "last month" that quietly used the last thirty days instead of the calendar month.
  • A purchase count that includes a partial current week, so this week always looks worse.
  • A conversion figure that used a different attribution setting than the one your Ads Manager column is showing.
  • A "top performing" ad that is top by a metric you did not ask about.

Every one of those is defensible from the model's point of view and wrong from yours. And because the surrounding narrative is fluent and well-organised, the wrongness does not feel like wrongness. It feels like a report.

Habit one: never let it choose the window

Most of the bad numbers I have seen trace back to an ambiguous date range. "Last month", "recently", "the past quarter" are all invitations to guess.

Pull spend, purchases and CPA for the window
2026-07-01 to 2026-07-31 inclusive.
Do not include any days outside that range.
State the exact window back to me before the numbers.

The last line is the useful one. Making it restate the window turns a silent assumption into something you can see and reject. If the window it echoes back is not the window you asked for, you have found the problem before it reached a decision.

Habit two: ask for the receipts

The connector works by making actual calls against your account. So ask what it called:

Before you interpret anything: list the tool calls you just made,
the exact parameters you passed, and the raw figures that came back.
Then give me your read.

This separates retrieval from interpretation, and they fail differently. Retrieval is usually right — it is a real API call. Interpretation is where the story gets ahead of the data. Seeing the raw numbers first means you are checking the reasoning against the figures rather than absorbing both at once as a single confident block.

It also makes a specific failure visible: if the narrative mentions a number that does not appear anywhere in the receipts, that number came from somewhere else.

This is one of the verification habits the weekly routine builds in by default, rather than leaving to memory. See how the routine handles it →

Habit three: check two numbers by hand

Not all of them. Two.

Pick the largest figure in the output and one you would act on, open Ads Manager, set the same window, and compare. It takes a couple of minutes and it is the only step here that is genuinely outside the model's reach.

If both match, the rest is probably fine. If either is off, do not patch that one number and carry on — re-run the whole thing with an explicit window, because a single mismatch usually means the frame was wrong, not that one figure was.

Where I got this wrong at first

I used to ask it to double-check its own numbers. That does not work, and it is worth understanding why: asking a model to verify itself gives you a second confident answer, not an independent one. It will often "confirm" the original. The check has to come from outside — the raw tool output, or Ads Manager. Anything else is the same source twice.

What this does not fix

  • Correlation dressed as cause. "CTR fell because the creative fatigued" may be true, or the delivery mix may have changed. The figures can be perfectly accurate and the story still wrong. Numbers you can verify; narratives you have to argue with.
  • Missing context. It does not know about your promo calendar, your stockouts, or the week you changed the landing page. It will explain a dip without them and sound reasonable.
  • Metric definitions. If your idea of CPA and the account's configured conversion do not match, every number will be internally consistent and useless to you.

The rule underneath all three

Let it read, let it draft, and keep the decisions. That is why everything the routine creates is drafted paused and why budget changes stay manual — not because the model is reckless, but because a wrong number that only produces a draft costs you a minute, and a wrong number that moves spend costs you real money.

Start at the setup guide if you have not connected yet. Two related pieces: what the connector can actually see of your creatives — the common answer is out of date — and whether any of this puts your ad account at risk, which is the question people ask first and worry about most.

The routine that builds this in

The Claude Ads Operator is the weekly system I run my own Meta ads with — the routine, the prompts, and the verification habits that stop a confident wrong number becoming a decision. Everything it drafts starts paused.

See what's inside — $67 founding price

Pre-sale: the modules are still being recorded and founding members get the checkout link first. No charge today. Public price $97.

Espen Opdahl Writes The Claude Ads Operator. I run Meta ad accounts through Claude and Meta's official ads connector, and I write down what actually happens — including the parts that don't work. Not affiliated with Meta or Anthropic.