Lock in $67
Agency

Multiple ad accounts in Claude: one call, one account

Every read tool on the official connector is scoped to a single ad account. Here is what that changes once you hold more than one.

Espen Opdahl Published 6 min read
The short answer

Meta’s official connector has no idea which ad accounts are “yours”. One tool lists every account your login can reach; every other read tool takes a single ad account ID as a required parameter. There is no portfolio view and no cross-account total. A comparison of four accounts is four separate calls, and the arithmetic that joins them is the assistant’s, not Meta’s. Almost everything that goes wrong across a set of accounts follows from that one fact.

You hold four ad accounts. You ask which of them had the worst week. Back comes a confident ranked table — and nothing in it tells you whether it read four accounts, or three, or the same one twice. That is the shape of every multi-account problem here: nothing errors, nothing looks wrong, and the only open question is which accounts the answer was about.

One call, one account

The listing tool is the only place the plural exists. Read on 2026-09-10, it describes itself as retrieving

the list of ad account IDs that the current user has access to
in pages, each row carrying the account, its owning business, and two flags about whether the account can be used at all.

After that, the plural stops. The entity reader, the performance-trend tool, the activity log and the advertiser-context tool each declare ad_account_id as a required parameter, and each takes exactly one. The trend tool is explicit about the boundary: entity IDs you scope it with must all be the same type and must belong to the account you named.

So a portfolio question is not a portfolio query. It is a loop, run by the assistant, whose results are added up in prose afterwards. Meta returns no combined figure and never sees the combined question — which puts every cross-account number in the category that has to be checked against Ads Manager before you act on it. It gets narrower still: the entity reader states that account-level requests support neither filtering nor sorting, so even inside one account, “rank these” happens after the data arrives rather than in the request.

Running several accounts through one assistant is a routine problem before it is a tooling problem. The Claude Ads Operator course builds that routine, starting from attaching the connector properly.

worth knowing The account list names the business that owns each account — and says in writing that it will not name the agency with access to it.

The listing tool’s own response guidelines, read 2026-09-10:

The business fields reflect the owning business only. Ad accounts shared with ad agencies may have additional businesses with access that are not shown here.
The same paragraph adds that an empty business ID or name means the account has no owning business at all. For an in-house team that column is a label. For anyone managing other people’s accounts it is a list of client names with no marker for which relationship each one is, and a blank in it is a real state rather than a failure.

Two flags, and they gate different things

is_ads_mcp_enabledis_queryable
What it coversThe account and everything under itOne tool: the entity reader
What false meansDo not use this account ID in any callDo not call the entity reader; other tools are not mentioned
Does it explain itselfNo reason fieldYes — a not-queryable reason to surface
Is true a promiseNot statedNo — described as best-effort

Both instructions are written to the assistant rather than enforced at the door: the schema says that if the first flag is false, do not use that account ID or any ad objects under it in subsequent calls. That is guidance arriving in the same channel as everything else the model reads, and worth treating as guidance. The rollout flag is a server-side gate you cannot switch on yourself; the queryable flag is a narrower state that leaves the rest of the surface working. In a portfolio you will usually hold some of each, which is exactly why a whole-list question can come back short without saying so.

Three things that bite once there is more than one

  1. Entity IDs from the wrong account are dropped, not rejected silent

    Paste a list of campaign IDs gathered from two accounts and the reader does not fail. Its own parameter documentation says IDs that do not match the requested level or ad account are omitted, and listed in an additional-info block beside the result. The table you get is correct and incomplete, and the note explaining why is somewhere you were not looking.

    The trade: the fix is one call per account, which is slower and eats more of the conversation than the single paste you wanted to do.

  2. The error tool is the one read that does fan out useful

    The delivery-error tool takes a list of entity IDs rather than an account, and its schema says several may be provided and that an account ID returns the errors of its child entities. That makes a one-call sweep for delivery blockers across a set of accounts the only genuine cross-account read on the surface — and the first thing to run on a Monday if you hold several.

    The trade: its scope is narrower than the word error suggests. It covers hard delivery stops on child objects, and rules out pacing problems, restricted accounts and ad rejections in its own description.

  3. One chat is one traced conversation, whoever it is about

    Every tool requires a conversation ID the assistant generates once and then repeats. The parameter says it

    groups the calls belonging to one conversation with the advertiser so they can be traced together
    and that a new one is started only when a genuinely new conversation begins. Pair that with the field on every call carrying the operator’s request in their own words, and a session hopping between three clients is filed at Meta as a single thread that did so.

    The trade: a chat per account means retyping context you would rather carry over.

It will answer a portfolio question. It will not have read a portfolio.

What the guides describe, and what they are describing

Search this and the useful-looking results are mostly about somebody else’s server. The page ranking for the multi-account configuration question sits on the vendor blog Ryze AI (Ira Bodnar, last updated 25 June 2026); it promises switching between accounts by name in one chat, no re-auth, no separate login per client, and an assistant that remembers which account you are in. Read it closely and that describes Ryze’s own connector, not Meta’s — the article never quotes the official surface. Workspace separation is a real reason third-party servers exist, and this blog has been fair to that trade before. The mistake is carrying the promise across to the official endpoint, where the only thing that switches account is the ID in the next call.

  • Asking for a total across accounts and treating it as data. Nothing at Meta computed it. It is addition performed in the chat, on figures fetched one account at a time.
  • Assuming the account list tells you who manages what. It names owners; agency access is documented as not shown.
  • Reading the two flags as one. An account can be usable for errors, activity history and catalog work while the entity reader is closed to it.
  • Letting one chat roam across clients. It is traced as one conversation and each call carries the request in your words.

Try this tonight Ask for your ad account list and nothing else, then read the two flag columns and the business column before any performance question. Write down the accounts where either flag is false, and the ones whose owning business is not the one you expected. That short list is the set of accounts a portfolio question can quietly skip — and from tonight it is what you scope your questions around, one account at a time, instead of discovering it inside an answer.

Can Claude compare all my Meta ad accounts in one go?

Not as a single query. Every insight and entity tool requires one ad account ID, so a comparison is a sequence of calls with the totals assembled afterwards in the chat. Ask for the per-account figures alongside any summary, and check them.

Do I need a separate connection for each client account?

No — the listing tool returns every ad account the signed-in user can reach. What the official surface does not give you is partitioning: nothing scopes a conversation to one client. That separation is a feature third-party servers sell, and on Meta’s own endpoint it is a discipline you apply yourself.

Why does one of my accounts return nothing while the others work?

Check the two flags in the account list first. The rollout flag closes the whole account to the connector; the queryable flag closes only the entity reader and comes with a reason to read. Two different problems, two different fixes.

Is it a problem to have several clients’ accounts in one chat?

It is traceable, which is not the same as dangerous. The calls are grouped under one conversation ID and each carries your request in your own words. If your client agreements make that awkward, the answer is a chat per account — there is no setting for it.

Run several accounts without losing track of which one you are in

The course is the weekly routine behind these posts: what to read, what to draft, what never runs without you — account by account.

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.