Start with the real boundary
The MCP tool stays inside run_custom_report with api="rest" and report_type="HISTORICAL". There is no GA4 property ID, Google Ads account ID, spend import, bid data or keyword report in this use case.
If PAGE_PATH, SESSIONS, ADSENSE_REVENUE or AD_EXCHANGE_REVENUE is missing, the right explanation is a GAM link or data availability issue. The answer should not pretend that OrbiAds has a separate GA4 or Google Ads connector.
- Allowed actions:
get_report_dimensions,get_report_metrics,run_custom_report,get_report_result. - Required scope: the Google account must be authorized for Google Ad Manager reporting.
- Required condition: the Analytics link or demand source must already be active in GAM.
Analytics fields when the GAM link is active
Ask the assistant to verify the field catalogue first, then run a historical report with DATE, PAGE_PATH and PAGE_TITLE_AND_SCREEN_NAME. Useful metrics include SESSIONS, ACTIVE_USERS, GOOGLE_ANALYTICS_VIEWS and GOOGLE_ANALYTICS_REVENUE.
A concrete output line should read like reporting, not like connector setup: /news/live | 2026-06-08 | 18,420 sessions | 22,814 views | EUR 1,284 Analytics revenue.
- Prompt: "Using GAM REST only, show page paths with sessions and Analytics revenue for the last 30 days."
- Payload fields:
dimensions=["DATE","PAGE_PATH","PAGE_TITLE_AND_SCREEN_NAME"]. - Payload metrics:
metrics=["SESSIONS","ACTIVE_USERS","GOOGLE_ANALYTICS_VIEWS","GOOGLE_ANALYTICS_REVENUE"].
Demand fields for AdSense and Ad Exchange
The same pattern works for demand reporting when GAM exposes the source fields. Use DEMAND_CHANNEL_NAME with AdSense and Ad Exchange metrics to separate revenue sources without calling Google Ads APIs.
A useful line is: Ad Exchange | Sports/Home | 244,180 impressions | EUR 942 revenue | EUR 3.86 average eCPM. If the user asks for Google Ads spend, CPC, bids, keywords or native clicks, answer that this GAM REST workflow does not provide those fields.
- Prompt: "Compare AdSense and Ad Exchange revenue by ad unit for the last 7 days via GAM REST."
- Payload dimensions:
dimensions=["DATE","AD_UNIT_NAME","DEMAND_CHANNEL_NAME"]. - Payload metrics:
metrics=["ADSENSE_IMPRESSIONS","ADSENSE_REVENUE","AD_EXCHANGE_IMPRESSIONS","AD_EXCHANGE_REVENUE","AD_EXCHANGE_AVERAGE_ECPM"].
Skill guardrail to customize
Add a guardrail to Claude, Codex or another MCP coworker: "Use only GAM REST reporting fields. Validate field names with the catalogue. If a linked field is unavailable, explain that the link or source may not be active in Google Ad Manager."
This keeps the response precise for AdOps: the assistant can still produce a daily note, an inventory diagnosis or a demand-source comparison, but it will not hallucinate a GA4 Data API or Google Ads API integration.
- Good final note:
These are GAM REST linked fields; no GA4 Data API or Google Ads API was called. - Good failure note:
PAGE_PATH is not available in this network report catalogue; check whether the Analytics link is active in GAM. - Good next step: link back to the dimensions and metrics catalogues before changing the prompt.
Open the exact MCP payload, fields and output lines for linked Analytics fields.
Review AdSense and Ad Exchange fields exposed by GAM REST when demand sources are active.
