Troubleshooting and Important Considerations for PMA MCP Server

Troubleshooting and Important Considerations for PMA MCP Server

Info
This article covers known limitations and current behaviors of the Power My Analytics MCP server, followed by specific troubleshooting steps for the issues most commonly encountered. The Limitations and Important Considerations section explains the "why" behind each issue so you can set accurate expectations and avoid unnecessary troubleshooting. The Troubleshooting section follows with Symptom, Cause, and Solution for each specific issue, with a reference back to the relevant limitation where one applies. For setup instructions, see Connect to the PMA MCP Server from Claude Desktop or Connect to the PMA MCP Server from ChatGPT. For a full tools inventory, see the PMA MCP Tools Reference.
Notes
The PMA MCP server is now in Beta and available to all PMA users. No early access request is required.
Alert
MCP usage is included with your PMA plan and draws from the same shared per-plan limit pool as the Power My Analytics API (each plan includes an API rate limit, a request quota, and a row quota per billing cycle; on the Custom plan the request and row quotas are negotiated with your sales representative). See Get Started with Power My Analytics API for the current per-plan limits.

Limitations and Important Considerations

The behaviors described in this section are known characteristics of the current release, not unexpected bugs. Many will be resolved or superseded as the MCP server moves toward general availability. Where a limitation has a corresponding troubleshooting fix, the Troubleshooting section below provides the resolution steps.

Access and Plan Eligibility

MCP is available to all PMA users during Beta. No early access request or allow-listing is required. Tokens are created automatically when you connect an AI client via the OAuth flow.

Plan-tier eligibility for general availability is pending. Specific plan eligibility will be confirmed when billing and metering for MCP usage is finalized. Until that decision is made, plan-eligibility statements in PMA documentation remain conditional.

Authentication and Token Behavior

Two authentication paths are supported. Browser-based AI clients (Claude Desktop, Claude Web, Claude Code, ChatGPT) authenticate via OAuth 2.1 + PKCE against your existing PMA login. Headless / server-to-server clients send your PMA API token directly as Authorization: Bearer <token> against https://pma-mcp.web.app/mcp, skipping OAuth entirely. Both paths resolve to the same underlying PMA API token. Either https://pma-mcp.web.app or https://pma-mcp.web.app/mcp works for any client; the two are interchangeable aliases for the same server, so the address you use is never the reason a connection fails. For the headless walkthrough, see Headless/Server-to-Server Integration with PMA MCP Server.

Token lifetimes vary by authentication path. OAuth-issued access tokens (used by browser-based AI clients) are issued at connection time and expire 1 year later. The underlying PMA API token used by headless integrations is long-lived and does not expire on its own; rotate it from Hub settings as part of your standard production-secret rotation. Separately, your AI client’s registration with the PMA server has a 24-hour lifetime, and PMA does not issue refresh tokens, so a registration that has aged out cannot renew itself: if a client that connected more than a day ago suddenly cannot connect, remove the connector and add it again to register fresh (see the entry below, "Authorization Successful, but your AI client then says it cannot connect"). The 1-year access token and the 24-hour client registration are two different things; your year-long token does not stop working after a day. Refresh tokens are not currently issued; for browser-based clients, disconnect and reconnect to mint a new token when one expires (or if your hub access is revoked).

One API token per organization. Customers with access to multiple hubs cannot toggle between them within a single session; to switch hubs, disconnect the connector and reconnect, choosing the desired hub during the OAuth flow.

Data and Query Behavior

The historical-data window cap has not yet been decided. The MCP server does not currently enforce a maximum lookback period. Responses for very old date ranges should be treated as best-effort until the cap is formally set and documented.

Response shapes for high-frequency queries are still being standardized. During Beta, the same prompt may occasionally return data in slightly different structures across users or sessions. Canonical response formats for common queries (sources, accounts, summaries) are being finalized.

The MCP server queries PMA's warehoused data layer, not live platform APIs. Data reflects the state of PMA's warehouse after the most recent successful Data Sync for each platform. Sync cadence is plan-dependent: daily by default, with hourly refreshes available on Custom plans with the optional hourly refresh feature. Each account's last_sync timestamp is queryable via pma_list_data_sources for current freshness.

Zero-value days are reported as gaps, not anomalies. pma_detect_anomalies explicitly excludes zero-value days from anomaly detection and reports them separately in the data_gaps field. If a customer asks "why didn't it flag the day I had zero spend," this is intentional behavior, not a bug.

ChatGPT-Specific Behavior

ChatGPT does not invoke the PMA MCP automatically. Unlike Claude Desktop, ChatGPT requires you to explicitly select the PMA MCP app from the tools menu at the start of each new chat. If this step is skipped, ChatGPT will answer data questions without calling any PMA tools, and the response will not reflect your actual Hub data.

Cost and Performance Considerations

Vague prompts cause the AI to make multiple discovery calls before answering. When a prompt does not specify the platform, metric, date range, or analytic intent, the AI must call pma_list_data_sources and related tools before it can begin analysis. Each additional tool call adds latency and, on most AI clients, token cost. Specifying these four elements up front materially reduces the number of tool calls required. See Tips for Writing Effective Prompts in the PMA MCP Tools Reference.

Alert
Rate limit: a per-plan rate limit shared between MCP and the PMA API (Free 15, Business 30, Grow 45, Pro 45, Custom 60 requests per minute). This is a hard limit. A shared per-plan quota of requests per billing cycle also applies (Free 100; Business 5,000; Grow 15,000; Pro 25,000; Custom negotiated with your sales representative). Agentic AI clients in chatty loops (or analytical investigations that fan out across many platforms in quick succession) can hit this limit and receive a generic "too many requests" error. This is intentional, not a bug. If the limit is hit, pause for a minute before retrying, and consider tightening prompts to reduce the number of tool calls.

pma_inspect_org_data is slow. A full diagnostic scan can take 30–45 seconds. Reserve it for troubleshooting; pass a connector_type to keep individual scans fast.

Unavailable Data

The following are not currently accessible through the PMA MCP server:

  • Real-time, non-warehoused data. The MCP server queries PMA's warehoused data layer only. Sync cadence is plan-dependent (daily by default; hourly on Custom plans with the optional hourly refresh feature).
  • Multi-hub session. Within a single OAuth session, the customer can only query one hub at a time. Switching hubs requires reconnecting.

Troubleshooting

Each issue below includes the symptom as the customer would experience it, the cause (with a reference to the relevant limitation above), and the resolution steps.

Connection and Authentication Issues

Authorization Successful, but your AI client then says it cannot connect

Symptom: You finish signing in and see "Authorization Successful!", but your AI client's Connectors panel then shows the PMA entry against https://pma-mcp.web.app with "Couldn't connect to the server. Check that the URL points to a valid MCP server" and a Reconnect button.

Cause: The sign-in (OAuth) finished and a token was issued, but the connection step right after it did not complete. The usual reasons, in the order worth checking:

  • The authorization timed out. The pending sign-in is valid for about 10 minutes; a long pause between authorizing and the client connecting lets it expire.
  • The client's registration went stale. Your AI client's registration with the PMA server lasts 24 hours, and PMA does not issue refresh tokens, so a registration that has aged out cannot recover on its own. Clicking Reconnect will not clear it; the connector has to be removed and re-added.
  • A corporate network or proxy is in the way. The sign-in page is ordinary web traffic and can go through, while the streaming connection your AI client uses right afterward is blocked or cut short.
  • Your plan's per-minute request limit was hit (a 429 response), your subscription is not active (a 402 response), or a manually created API token was used instead of the one from the sign-in (a 403 response).

Solution:

  1. Remove the PMA connector from your AI client, add it again at https://pma-mcp.web.app, and complete the sign-in through to "Authorization Successful!" without a long pause. This registers your client fresh and issues a new token, which clears the timeout and stale-registration cases (by far the most common).
  2. If it still fails, try a different network (for example, off the corporate VPN or on a personal hotspot). If it connects there, the corporate proxy or firewall is the cause: ask your IT team to allow https://pma-mcp.web.app and to let long-lived streaming responses through.
  3. Confirm the connection registered on the PMA side: open the MCP page in your Hub (left navigation) and check the Connected Application table. If your AI client is listed, the sign-in worked and the fix is on the connection or network side (steps 1 and 2). If nothing appears after several tries, contact support using the details under When to Contact Support.

Note: Remove-and-re-add will not help in three cases. If your subscription is inactive, restore billing first; if you were rate limited, wait about a minute and retry; if a manually created API token was pasted in, remove it and connect through the normal sign-in instead. Both https://pma-mcp.web.app and https://pma-mcp.web.app/mcp reach the same server and either works, so the address itself is not the problem.

Note (existing connections): If you first connected before PMA introduced per-connection tokens and per-user usage visibility, sign out of the connector and reconnect once so those changes take effect.


Your subscription is inactive (402)

Symptom: The connection or your tool calls fail, and your PMA subscription is past due, canceled, or otherwise not active.

Cause: The MCP server returns a 402 response when billing is not active for your PMA account. This is the shared MCP and API access being gated, not a connector bug.

Solution: Restore your subscription in your Hub's billing settings, then reconnect the PMA connector. Removing and re-adding the connector will not restore access while billing is inactive.


Token expired or sudden loss of tool access (browser-based AI clients)
Symptom: The PMA MCP was working, but Claude or ChatGPT can no longer return data from your Hub. Tool calls fail silently or the AI states it does not have access.
Cause: OAuth-issued access tokens are valid for 1 year, but they can expire earlier if your hub access is revoked or your PMA login changes.
Solution: Disconnect the PMA MCP connector in your AI client and reconnect. The OAuth flow re-runs and issues a new token. Refresh tokens are not currently issued. This troubleshooting step applies only to browser-based AI clients; headless integrations use the long-lived underlying PMA API token directly and re-authenticate by rotating that token from Hub settings rather than disconnecting and reconnecting.


Connection fails entirely with no clear error
Symptom: The connection attempt fails without a detailed error message. The PMA MCP connector does not appear as connected after completing the setup steps.
Cause: The server address was mistyped. A trailing slash or the /mcp suffix is not a problem; https://pma-mcp.web.app and https://pma-mcp.web.app/mcp are interchangeable.
Solution: Verify that the server URL entered is exactly https://pma-mcp.web.app (a trailing slash or the /mcp suffix works the same) and retry. If the address is correct and the connection still fails right after "Authorization Successful!", see the entry above. If the issue persists, contact support.powermyanalytics.com.

ChatGPT-Specific Issues

ChatGPT answers without using any PMA tools
Symptom: You ask ChatGPT a question about your marketing data, but the response is generic, does not reflect your Hub data, or explicitly states that no data is available, even though the PMA MCP connector is installed.
Cause: The per-chat tool selection requirement described in ChatGPT-Specific Behavior above. ChatGPT does not invoke custom MCP connectors automatically; the PMA MCP must be selected from the tools menu at the start of every new chat.
Solution: Open the tools or apps menu near the ChatGPT message input, select PMA MCP from the list of available tools, and re-send your prompt. This selection must be made at the start of each new chat; it does not carry over between sessions.

Tool Output and Data Issues

A query returns no rows for a platform you know is connected
Symptom: Asking the AI about a specific platform returns an empty result or the AI reports that it found no data, even though data for that platform is visible in your Hub.
Cause: One of three possibilities: (a) data has not yet synced for the requested date range, (b) the AI is querying an incorrect report type for that connector, or (c) a sync gap means no data exists for the window requested.
Solution: Ask your AI assistant to call pma_inspect_org_data for the connector. This diagnostic tool confirms which report types have data and what date ranges are populated. With that information, retry the query specifying the correct report type. If a sync gap is identified, initiate a manual backfill from Hub > Sources > Actions > Backfill data range for the affected date range.


An anomaly is flagged that appears to be missing data, not a performance change
Symptom: pma_detect_anomalies flags a day as an anomalous drop in spend or impressions, but investigation reveals no data was reported for that day at all; the drop is a sync gap, not a real performance change.
Cause: Before April 21, 2026, the anomaly detection tool treated zero-value days (caused by sync gaps) the same as genuine statistical outliers. This has been resolved.
Solution: As of April 21, 2026, pma_detect_anomalies returns a separate data_gaps field. Days with no data are now reported as gaps rather than as anomalies. If you are still seeing this behavior, verify that your AI client has fetched the latest tool description. If a data gap is confirmed in the data_gaps field, initiate a manual backfill via Hub > Sources > Actions > Backfill data range for the affected date range.


The same prompt returns different response shapes for different users or sessions
Symptom: Two team members ask the AI the same question and receive answers with different column names, different ordering, or different formatting.
Cause: The response-shape consistency limitation described in Data and Query Behavior above. Canonical response formats for high-frequency queries are still being standardized.
Solution: Until response shapes are standardized, include the desired output format in the prompt. For example: "List my data sources as a table with columns: Platform, Account Name, Has Data, Last Sync Date." This produces a predictable structure regardless of the underlying variation.


The AI makes many tool calls before answering, and responses are slow or expensive
Symptom: A question that seems simple triggers a long chain of tool calls before any answer is returned, which takes longer and uses more tokens than expected.
Cause: The cost consideration described in Cost and Performance Considerations above. Vague prompts require the AI to run discovery calls (pma_list_data_sources, pma_describe_platform, pma_inspect_org_data) before it can begin analysis, because it has to orient itself to your specific Hub configuration.
Solution: Specify the platform, metric, date range, and analytic intent up front. For a before-and-after example, see the Tips for Writing Effective Prompts section in the PMA MCP Tools Reference.


Wrong connector name
Symptom: A tool returns no results because the connector name in the prompt does not match a connected source.
Cause: Connector names must be passed exactly as returned by pma_list_data_sources.
Solution: Copy the connector name exactly from your connected sources list, or have the AI assistant call pma_list_data_sources first to retrieve the canonical name.


No data yet for a new connection
Symptom: A newly added data source returns empty results when queried.
Cause: The initial sync has not yet completed for the new connection.
Solution: Wait approximately one hour after connecting for the first sync to populate, then retry the query.


Occasional query timeout
Symptom: A tool call times out without returning data.
Cause: Transient backend slowness or load.
Solution: Retry the same query a few minutes later.

Headless / Server-to-Server Issues

401 (unauthorized) error from the MCP endpoint
Symptom: A request to https://pma-mcp.web.app/mcp returns HTTP 401 or an "unauthorized" error.
Cause: Missing or malformed Authorization header, or the token in the header is invalid or has been rotated.
Solution: Confirm the header is exactly Authorization: Bearer <token> (the literal word Bearer followed by a single space, then the token, with no extra whitespace or quotes). Confirm the token value in your service's secrets manager matches the most recent token PMA issued. If the token was recently rotated, replace the old value and restart your service.


403 (forbidden) error from the MCP endpoint
Symptom: A request returns HTTP 403 or an "organization not authorized" error, even though the Authorization header looks correct.
Cause: The API token may be invalid, revoked, or associated with a different organization. For browser-based AI clients, a 403 can also mean a manually created PMA API token was supplied where an OAuth token is expected; connect through the normal in-client sign-in instead of pasting an API token.
Solution: Confirm the token in your secrets manager matches the current token in your Hub settings. If it was recently rotated or revoked, generate a new one and update your service. Contact support.powermyanalytics.com if the issue persists.


Rate limit exceeded (HTTP 429) in agentic loops
Symptom: Tool calls from a headless service start failing with "too many requests" or HTTP 429 errors.
Cause: The MCP server enforces a hard limit of a per-plan rate limit shared between MCP and the PMA API (Free 15, Business 30, Grow 45, Pro 45, Custom 60 requests per minute). Agentic loops, fan-out queries across many platforms, or aggressive retries can exceed this limit quickly.
Solution: Slow your call cadence, batch requests where possible, and add exponential backoff to your retry logic. For more headless-specific guidance, see Headless/Server-to-Server Integration with PMA MCP Server.


MCP client cannot establish a Streamable HTTP connection
Symptom: Your MCP client library fails to open a connection to the MCP endpoint, or the connection drops shortly after opening.
Cause: Your client library may default to the older Server-Sent Events transport, or your network may be closing long-lived HTTP responses.
Solution: Confirm your MCP client is using Streamable HTTP transport explicitly (not the older SSE transport from earlier MCP versions). If you are running behind a proxy or restrictive firewall, allow https://pma-mcp.web.app and confirm long-running responses are not being closed prematurely.

When to Contact Support

Contact PMA support at support.powermyanalytics.com if:

  • You are experiencing an error or behavior not described in this article.
  • The troubleshooting steps above did not resolve your issue.

When opening a ticket, include the AI client you are using (Claude Desktop, ChatGPT, or other), the prompt or action that triggered the issue, and any error message or unexpected output you received.