Your account is enabled and still returns nothing
Everyone checks whether the connector is switched on. Almost nobody checks the second flag, which is the one that decides whether the account will actually answer.
An ad account can have the Meta ads connector switched on and still refuse to answer
questions. The account list returns two separate flags, and everyone has only heard of one
of them. is_ads_mcp_enabled is the rollout gate. is_queryable is whether
the account will actually return entities. I ran the account list across the accounts I have access
to and found one that was enabled and not queryable at the same time — its
not_queryable_reason was the literal string "Unknown error". If you are
troubleshooting a connector that "works" but returns nothing, this is the field to read.
Every guide to this connector treats access as one switch: either your account is in the rollout
or it isn't. That is the question I answered in
the post on is_ads_mcp_enabled: false, and
it is the question everyone asks. It is also only half of the gate.
What the account list actually returns
The tool that enumerates your ad accounts returns more per account than a name and an ID. These are the fields that decide whether anything else you try will work:
| Field | What it governs | If it is wrong |
|---|---|---|
is_ads_mcp_enabled | Whether the account is in the rollout at all | Nothing works. Nothing to do but wait. |
is_queryable | Whether the account will return entities | Reads fail even though the account is enabled |
not_queryable_reason | Why, when it is not queryable | May be uninformative — see below |
account_status | Meta's own account state | A non-ACTIVE status can take queryability with it |
has_payment_method | Whether a payment method is attached | Nothing can go live, drafts are still fine |
The two that matter for troubleshooting are the middle three, and none of them appears in any guide I have read.
This is the part that costs people an evening. is_ads_mcp_enabled: true reads like
a green light, so when a request comes back empty the natural conclusion is that the prompt was
wrong, or the date window, or the connector. Reading is_queryable first turns a
half-hour of re-prompting into one line of output.
The reason field can be useless, and that is the finding
When I ran this, the account that came back is_queryable: false carried a
not_queryable_reason of "Unknown error". Not a permission message, not a
billing message — the string "Unknown error". Its account_status was also
not ACTIVE.
So the honest shape of this is: the connector will tell you an account cannot be queried, and it will sometimes be unable to tell you why. That is worth knowing before you go looking for a misconfiguration on your side that does not exist. In the case I saw, the account's status was the thing that had changed — not anything about the connector, the permissions, or the prompt.
A tool that reports "Unknown error" is not broken. It is telling you the answer is somewhere the tool cannot see, which usually means account state rather than connector state.
Checking these flags before anything else is the first thirty seconds of the routine, and it is the cheapest debugging step there is. See what the rest of the week looks like →
How to read your own
One prompt, no setup, and it answers the enabled question and the queryable question at once:
List every ad account I have access to. For each one show me
whether it is MCP-enabled, whether it is queryable, the reason
if it is not, and its account status.
Read it as a sequence rather than a list. If is_ads_mcp_enabled is false, stop —
that is a rollout gate and waiting is the only move. If
it is true but is_queryable is false, look at account_status next, because
that is where the cause usually is. If both are true and a read still comes back empty, then it is
worth suspecting the request — most often the date window. Where you hold several accounts,
run that sequence over the whole list before you ask anything, because
every read is scoped to one account and a
portfolio question can skip one without saying so.
What this does not tell you
- It is not documented. Meta does not publish the semantics of these fields for this connector. Everything above is observation from live output, dated, and it can change without an announcement.
- A false does not always explain itself. That is the whole point of this post. Treat
not_queryable_reasonas a hint, not an answer. - It says nothing about permissions. Queryability is a property of the account. What you are allowed to do with it is a separate question and fails differently.
- Do not push past it. If an account reports itself as not queryable, entity reads on it are not expected to work, and retrying in a loop just wastes the evening you were trying to save.
Try this tonight Run the prompt above across every account you have, not just the one you are working in. Rollout and queryability are both per-account, so the account you happen to be using is the worst possible sample size — and if one comes back non-queryable, check its status before you change anything else.
If you have not connected yet, the setup guide covers what the connector exposes once you are in, with the date it was checked on it.
Frequently asked questions
Is is_queryable the same as the rollout flag?
No, and that is the confusion this post exists to remove. The rollout flag decides whether the connector is available on the account at all. Queryability decides whether that account will answer. An account can pass the first and fail the second.
What do I do about "Unknown error"?
Look at the account's own status in Business settings rather than at the connector. In the case I saw, account state was the thing that had changed, and nothing about the connector or the prompt was involved.
Will it fix itself?
If the cause is account state, it resolves when the account state does — which is a billing or ownership question, not a technical one. If the cause is the rollout, waiting is genuinely the only option.
Does this affect drafting too?
Reads are what fail visibly. Since the sane workflow reads before it drafts, a non-queryable account tends to stop you at the first step rather than producing a bad draft — which is the better failure of the two.
The routine that runs after the flags are green
The Claude Ads Operator is the weekly pass over the account — what to ask, how to find the real winners, and what an AI is never allowed to touch.
See what's inside — $67 founding pricePre-sale: the modules are still being recorded and founding members get the checkout link first. No charge today. Public price $97.