The client returns 401 or invalid_token
The bearer token is missing, revoked, or not the token stored for this tenant. Create a new one at API Keys, or sign in again with hosted OAuth. Production ignores MCP_ACCEPT_TOKENS. See Authentication.
The client connects, then every platform tool is empty
MCP login worked. The ad account grant did not. Open Connections and finish OAuth, then callget_connections_status. Google can also fail get_google_api_readiness when the manager account or the adwords grant is missing. TikTok has the same kind of check in get_tiktok_api_readiness.
A Google create returns google_adapter_unavailable
The server does not have a usable Google Ads adapter for that call. The draft was not created. Fix the connection, then validate again. Do not send create_search_campaign in a loop.
A write returns quota_exceeded
The hosted plan has used its tool calls. get_usage_status shows the row. Limits are on Pricing.
A write returns quota_check_unavailable
The quota service did not answer. Spend-affecting writes stop on purpose. Wait until get_usage_status works, then submit the change once.
The campaign was created and is not spending
Creates stay paused, and TikTok ad groups are created disabled.verify_google_campaign_is_live and get_amazon_moderation only report status. Enabling spend is a Pending Action. If the approved body changed afterwards, the execution queue stops on the payload check. See Approvals.
A comparison refuses to recommend a budget
STRATEGY.md is missing a KPI the workflow needs. Run /adsmcp:setup. The agent will not fill in a CPA, ROAS, CTR, or budget.
Snap still shows up
Snap is withdrawn. New catalog pages do not include it. A call on the old route returnsplatform-withdrawn and an empty diagnostic list. Disconnect any leftover expectation. Do not send ad traffic there.
Where to look next
Admins can open Diagnostics and callget_recent_errors or get_request_trace. why_did_this_fail explains one trace. The other read-only helpers are on Diagnostic tools. Send support the tool name and the reason. Leave the token out.