Meta Ads MCP not working: is_ads_mcp_enabled false, no tools, sign-in errors
When Meta’s official ads MCP server isn’t working, the error is almost always one of three kinds.
is_ads_mcp_enabled: false means Meta hasn’t switched that ad account on yet: it is a gradual rollout, not a ban,
and no setting on your side changes it. Sign-in errors such as Dynamic registration is not available for this client
mean Meta’s server doesn’t accept your AI client, so use ChatGPT or Claude, or connect with your own Meta developer app.
And “connected, but no tools” or timeouts usually come from an outdated client or an expired session.

Find your error
Start with the exact text you see. Most messages come either from Meta’s server or from your AI client, and the fix depends on which side said it.
| What it means | What to do | |
|---|---|---|
is_ads_mcp_enabled: false or Ads MCP is gradually being rolled out | Meta has not enabled this ad account for its MCP server yet | Wait, or use a connector that works through the Marketing API (see below) |
Dynamic registration is not available for this client. | Meta’s server does not accept your AI client | Use ChatGPT or Claude, or sign in with your own Meta app ID |
The provided redirect_uris are not registered for this client. | Claude Code’s local callback is not on Meta’s list | Add the server with --client-id and your own Meta app |
Couldn’t register with Meta’s login service. | claude.ai could not register the connector | Add an OAuth Client ID in the connector’s advanced settings, or remove and re-add the connector |
connection timed out after 30000ms, OAuth session expired and could not be refreshed | An old Claude Code version or an expired sign-in | Update Claude Code to 2.1.270+, then sign in again with /mcp |
| Signed in, but zero tools | The client connected but did not load the server’s tool list | Update the client; in Codex this is an open issue |
| “Ads MCP server” missing in Business Suite settings | Agent rules are not available to your business yet | Nothing to fix: the connector works without rules |
| A request to create a campaign or change a budget is denied | An agent rule in Business Suite blocks it | Check Settings → Integrations → Ads MCP server for that ad account |
is_ads_mcp_enabled: false is not a ban
When an assistant lists your ad accounts through Meta’s server, each account comes back with fields such as
is_ads_mcp_enabled, is_queryable and not_queryable_reason. If the first one is
false, the server will not read or change that account, and assistants often relay a message like
Ads MCP is gradually being rolled out. Please check back at a later date to use Ads MCP with this Ad Account.
Meta does not document the flag itself, but it says plainly that access is staged. Its
Business Help Center page opens with You may not have access to all of these tools and features yet
,
and its developer blog says Meta is gradually rolling out access to tools available to ad accounts through this integration method
.
Meta publishes no list of which accounts come first.
It is not a sign that your ad account is restricted. Meta’s help page says it is unlikely that an account would be banned simply for using
the server, and that bans come from breaking advertising policies. What does not help, by every report we found: removing and
re-adding the connector, granting permissions again, or switching to another assistant. The flag lives on Meta’s side.
If you need the account working now, the alternative is a connector that talks to Meta’s Marketing API directly rather than through Meta’s MCP server. Those don’t depend on this rollout; see the last section.
Sign-in errors by AI client
Meta’s server lets an AI client register itself only if Meta recognises it. Testers found that callbacks of ChatGPT and Claude register, while Cursor and local callbacks get an HTTP 400. That is why the same Meta account connects in one assistant and fails in another.
| Status on 15 October 2026 | What works | |
|---|---|---|
| ChatGPT | Listed by Meta; connects | Add a custom MCP server with https://mcp.facebook.com/ads and sign in with Facebook |
| Claude and Claude Desktop | Listed by Meta; connects | If you see Couldn’t register with Meta’s login service, enter an OAuth Client ID in the connector’s advanced settings or re-add the connector (one open report) |
| Claude Code | Listed by Meta, but its local callback is refused (issue #59026, closed without a fix) | Your own Meta app: --client-id (next section); update to 2.1.270+ for the timeout fix (#89528) |
| Perplexity | Listed by Meta | Follow Perplexity’s connector instructions |
| Codex (CLI and app) | Not listed; Dynamic registration is not available for this client(issue #24103, open since May) | No official fix. Using your own Meta app has its own open reports |
| Cursor | Not listed; same registration error (Cursor forum) | Cursor says there is no client-side workaround and has raised it with Meta |
Codex also produced Authorization server issuer mismatch
in August. When we checked Meta’s published server
metadata on 15 October 2026, the issuer matched, so that particular error may be gone after an update.
Connect with your own Meta app
Owning a Meta app is not required for the assistants Meta lists. For the others, and for Claude Code, Meta’s developer guide describes connecting through your own developer app:
Create or open an app
At developers.facebook.com/apps, add the use case Create & manage ads with ads MCP server.
Set the redirect URL
In the Facebook Login for Business settings, add the redirect URL your AI client uses. A mismatch here is the most common reason the Facebook window refuses the sign-in.
Connect the client with your app ID
For Claude Code, Meta gives this command:
claude mcp add --transport http --client-id <META_APP_ID> meta-ads https://mcp.facebook.com/ads
For ChatGPT, choose OAuth and enter the app ID as the OAuth Client ID in the advanced settings.
Approve the permissions
At a minimum the sign-in must grant
ads_mcp_managementandads_readorads_management. More permissions, such ascatalog_managementorbusiness_management, unlock more tools.
Two limits from Meta’s documentation: a system user token works only if the system user has the Employee role (Admin-role
tokens can’t access the server), and an agency managing ad accounts of other businesses needs Advanced Access to
ads_mcp_management, which means Meta’s App Review.
Test the server without an AI client
To tell a Meta problem from a client problem, call the server directly with a user access token from the Graph API Explorer that has the permissions above:
curl -i -X POST "https://mcp.facebook.com/ads" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
--data-raw '{"jsonrpc":"2.0","method":"tools/list","id":1}'
A list of tools means the server, the token and its permissions are fine, and the problem is in your AI client. An HTTP 401
means the token is missing, expired or lacks ads_mcp_management. If tools load here but an account still shows
is_ads_mcp_enabled: false, it is the rollout.
Connected, but nothing happens
- Zero tools after a successful sign-in. The client failed to load the tool list. In Claude Code, run
/mcpto see the server’s state and update; in Codex it is an open issue. - Not all ad accounts are listed. The server only sees ad accounts your Facebook user has a role on. Ask the assistant to name the account you mean, and check your role in Business Settings.
- It worked, then stopped. People report the sign-in lasting about 60 days without a refresh token. Sign in again
(
/mcpin Claude Code, reconnect the connector elsewhere). - A change is refused. Rules in Meta Business Suite (Settings → Integrations → Ads MCP server) can block campaign creation, budget changes over a limit and more, per ad account. Meta notes that if you don’t see that page, your business doesn’t have rules yet.
- An odd error from a single tool, such as
OTID is a required input and cannot be empty or malformed
, is a server-side bug at Meta; retry later.
When you can’t wait for Meta
Third-party MCP connectors don’t use Meta’s MCP server: they call the Marketing API with the access you grant
in a normal Facebook sign-in, so is_ads_mcp_enabled doesn’t apply to them, and they register with your AI client
on their own terms. The trade-off is trust: you give that company access to your ad account, so check what it can change and
whether it shows a preview first. We compared them in
Meta Ads MCP servers in 2026: official vs third-party.
Variafy is one of them. ChatGPT and Claude sign in with Variafy itself, without a key; every change comes back as a preview that names the ad account and says whether spend can go up, and is applied only on a second, confirming call. It also reads your payments next to the ads, which Meta’s server does not. Variafy is in private beta: join the waitlist.
How we checked
Checked on 15 October 2026 against Meta’s Business Help Center article on ads AI connectors, Meta’s developer
documentation and developer blog for the ads MCP server, the GitHub issues of Codex, Claude Code and the Claude connector
directory, the Cursor forum, and Meta’s published OAuth metadata for https://mcp.facebook.com/ads. Error texts are quoted from those
reports. We did not sign in to Meta’s server from Codex or Cursor ourselves. Variafy is our product.
Questions
What does is_ads_mcp_enabled false mean?
It means Meta has not yet enabled that ad account for its ads MCP server. Meta is rolling access out gradually; the flag is not a restriction of your account, and reconnecting does not change it.
Can I turn on Meta Ads MCP for my ad account myself?
No. There is no setting for it: the flag is on Meta’s side. You can wait, or use a connector that works through the Marketing API instead of Meta’s MCP server.
Why does Meta Ads MCP say “Dynamic registration is not available for this client”?
Meta’s server only lets clients it recognises register themselves. ChatGPT and Claude work; Codex and Cursor were refused as of 15 October 2026. Connecting with your own Meta developer app ID is the documented alternative.
How do I connect Meta Ads MCP to Claude Code?
Create a Meta developer app with the “Create & manage ads with ads MCP server” use case, then run: claude mcp add --transport http --client-id <META_APP_ID> meta-ads https://mcp.facebook.com/ads, and sign in with /mcp. Use Claude Code 2.1.270 or later.
Can using Meta’s ads MCP server get my account banned?
Meta says it is unlikely that an account would be banned simply for using its ads MCP server; bans come from breaking advertising policies.