Linked demand inside GAM
AdSense and Ad Exchange fields in GAM REST
Use AdSense and Ad Exchange metrics that Google Ad Manager exposes in HISTORICAL reports when those demand sources are linked and active.
"In GAM REST, compare AdSense and Ad Exchange revenue for the last 7 days by DATE, AD_UNIT_NAME and DEMAND_CHANNEL_NAME. Include ADSENSE_IMPRESSIONS, ADSENSE_REVENUE, AD_EXCHANGE_IMPRESSIONS, AD_EXCHANGE_REVENUE and AD_EXCHANGE_AVERAGE_ECPM."
A demand-source readout from GAM REST that separates AdSense and Ad Exchange performance without using Google Ads API.
Agent workflow
- 01
Check that the requested AdSense or Ad Exchange metrics exist in get_report_metrics for REST/HISTORICAL.
- 02
Run run_custom_report against GAM REST with the demand-channel dimensions.
- 03
Call out unavailable demand metrics as GAM linkage or account-permission gaps.
MCP functions
Parent MCP call shown with the reporting action.
| Function | Cost | Purpose |
|---|---|---|
reporting(action="get_report_dimensions") | 0 cr | Checks GAM demand dimensions. |
reporting(action="get_report_metrics") | 0 cr | Checks AdSense and Ad Exchange metrics exposed by GAM. |
reporting(action="run_custom_report") | 0.5 cr | Runs the GAM REST demand report. |
JSON payload
{
"tool": "reporting",
"arguments": {
"action": "run_custom_report",
"params": {
"api": "rest",
"report_type": "HISTORICAL",
"date_range_type": "LAST_7_DAYS",
"dimensions": [
"DATE",
"AD_UNIT_NAME",
"DEMAND_CHANNEL_NAME"
],
"metrics": [
"ADSENSE_IMPRESSIONS",
"ADSENSE_REVENUE",
"AD_EXCHANGE_IMPRESSIONS",
"AD_EXCHANGE_REVENUE",
"AD_EXCHANGE_AVERAGE_ECPM"
]
}
}
}Representative output
- DATE=2026-06-08 | AD_UNIT_NAME=Sports/Home | DEMAND_CHANNEL_NAME=Ad Exchange | AD_EXCHANGE_REVENUE=EUR 1,284.20.
- DATE=2026-06-08 | AD_UNIT_NAME=Sports/Home | DEMAND_CHANNEL_NAME=AdSense | ADSENSE_REVENUE=EUR 342.10.
- Action: review ad units where Ad Exchange eCPM drops while GAM requests remain stable.
Dimensions and metrics
| Name | Source | Description |
|---|---|---|
| DATE | GAM | Report day |
| AD_UNIT_NAME | GAM | Inventory placement |
| DEMAND_CHANNEL_NAME | GAM | Demand channel exposed by GAM |
| Name | Source | Description |
|---|---|---|
| ADSENSE_IMPRESSIONS | GAM | AdSense impressions from GAM reporting |
| ADSENSE_REVENUE | GAM | AdSense revenue from GAM reporting |
| AD_EXCHANGE_IMPRESSIONS | GAM | Ad Exchange impressions from GAM reporting |
| AD_EXCHANGE_REVENUE | GAM | Ad Exchange revenue from GAM reporting |
| AD_EXCHANGE_AVERAGE_ECPM | GAM | Ad Exchange average eCPM from GAM reporting |
Limits
- AdSense and Ad Exchange rows depend on the publisher's GAM configuration and linked demand availability.
- This is not Google Ads reporting: no campaign spend, keyword, bid or Google Ads account metrics.
- Use only fields returned by GAM REST; switch fields if the selected network does not expose one.
- Use get_report_result for the full cached result when the inline response is truncated.
Use the editorial guide for the audience framing, then come back here for exact MCP actions, fields and payloads.
