google_ads_get_asset_report
Get Google Ads Asset Report
GoogleDescription
Asset-level performance report across hierarchy levels (AD_GROUP, CAMPAIGN, CUSTOMER, ASSET_GROUP). CAMPAIGN level automatically includes PMax asset groups. When levels is omitted, all levels are queried. Conversion breakdown, change history, and PMax audience signals (audiences and search themes) are opt-in to control response size. Video metrics are not available on asset resources. For creative inventory or copy exports, set include_asset_content: true — it resolves full sitelink copy (link text + both description lines), callout text, structured snippet values, call numbers, promotion targets, price offerings, and final URLs; without it, content is null for those asset types. Paginated: when a response includes nextCursor, call again with the same parameters plus cursor=<nextCursor>, and repeat until nextCursor is absent to get every row. A query that fails is named in warnings rather than silently returning nothing: a failed level's assets are missing from data and count, not absent from the account. If every level's row query fails, the call fails with the platform's error instead of returning an empty report. A cursor continues the queries page 1 read — a level that failed on the first page stays missing on later pages (omit cursor to retry it), and a level page 1 read that fails on a later page fails that call, which can be retried with the same cursor.
Usage
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "google_ads_get_asset_report",
"arguments": {
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"reason": "Review asset performance across all levels"
}
}
}
hopkin google asset-report get
| Flag | Type | Required | Description |
|---|---|---|---|
--customer-id | string | Required | Google Ads Customer ID (10 digits, with or without dashes) |
--login-customer-id | string | Optional | MCC (Manager) Customer ID; required for managed accounts |
--date-preset | string | Optional | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH. LAST_7_DAYS / LAST_30_DAYS are the 7 / 30 complete days ending yesterday (account time zone), as in Google Ads; THIS_MONTH runs through today. |
--date-range | object | Optional | Custom date range {start_date, end_date} in YYYY-MM-DD |
--campaign-ids | array | Optional | Filter to one or more campaign IDs |
--ad-group-ids | array | Optional | Filter to one or more ad group IDs |
--asset-ids | array | Optional | Filter to one or more asset IDs |
--asset-types | array | Optional | Filter by asset type(s): TEXT, IMAGE, YOUTUBE_VIDEO, SITELINK, CALLOUT, etc. |
--field-types | array | Optional | Filter by field type(s): HEADLINE, DESCRIPTION, MARKETING_IMAGE, etc. |
--levels | array | Optional | Levels to query: CUSTOMER, CAMPAIGN, AD_GROUP, ASSET_GROUP. CAMPAIGN automatically includes ASSET_GROUP (PMax). Defaults to all levels. |
--policy-approval-statuses | array | Optional | Filter by policy approval status(es). Useful for surfacing disapproved or limited assets without paginating through all results. |
--include-change-history | boolean | Optional | Add added_at, added_by, last_modified_at, last_modified_by via change_event queries. Limited to last 30 days of Google history. |
--include-conversion-breakdown | boolean | Optional | Include per-conversion-action breakdown on each asset row. Adds 4 extra GAQL queries and significantly increases response size. Default false. |
--include-audience-signals | boolean | Optional | Include PMax audience signals per asset group. Shows which audiences (remarketing lists, custom segments, interests) are configured as signals, and the search themes: each entry has a signalType of AUDIENCE (audienceResourceName, plus audienceName when resolvable) or SEARCH_THEME (searchThemeText, approvalStatus, and disapprovalReasons when disapproved). |
--include-asset-content | boolean | Optional | Resolve full asset content via a second query against the asset resource: sitelink link text + description lines, callout text, structured snippet values, call numbers, promotion targets, price offerings, and final URLs. Required for creative inventory / copy exports — without it, content is null for SITELINK, CALLOUT, STRUCTURED_SNIPPET, PROMOTION, CALL, PRICE, and LEAD_FORM assets. Adds 1 extra query per page. Default false. |
--order-by | string | Optional | Sort results by: impressions (default), clicks, cost, conversions, ctr. Applied globally after merging all levels. |
--limit | integer | Optional | Maximum rows to return per page (default: 20, max: 1000). Use cursor for subsequent pages. |
--cursor | string | Optional | Opaque cursor from the previous response's nextCursor. Pass it with otherwise identical parameters to get the next page; a cursor reused with different filters is rejected. Omit for the first page. |
--connection-id | string | Optional | Optional ID of a specific connection to use for this call. Omit to use the actor's default connection for this network. Call <platform>_list_connections to discover available connection IDs. |
{
"mcpServers": {
"google-ads": {
"url": "https://google.mcp.hopkin.ai",
"transport": "sse"
}
}
}
- All assets last 30 days
- Ad group assets last 7 days
- PMax assets by campaign
- Top headlines by impressions
- PMax with audience signals
- Creative inventory with sitelink copy
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
customer_id |
string |
Required | Google Ads Customer ID (10 digits, with or without dashes)maxLength: 20, pattern: ^[\d-]+$ |
reason |
string |
Required | Why this tool call is neededminLength: 1, maxLength: 500 |
Optional parameters (18)
| Name | Type | Required | Description |
|---|---|---|---|
login_customer_id |
string |
Optional | MCC (Manager) Customer ID; required for managed accountsmaxLength: 20, pattern: ^[\d-]+$ |
date_preset |
string |
Optional | Predefined date range: TODAY, YESTERDAY, LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH. LAST_7_DAYS / LAST_30_DAYS are the 7 / 30 complete days ending yesterday (account time zone), as in Google Ads; THIS_MONTH runs through today.TODAY YESTERDAY LAST_7_DAYS LAST_30_DAYS THIS_MONTH LAST_MONTH |
date_range |
object |
Optional | Custom date range {start_date, end_date} in YYYY-MM-DD |
campaign_ids |
array |
Optional | Filter to one or more campaign IDs |
ad_group_ids |
array |
Optional | Filter to one or more ad group IDs |
asset_ids |
array |
Optional | Filter to one or more asset IDs |
asset_types |
array |
Optional | Filter by asset type(s): TEXT, IMAGE, YOUTUBE_VIDEO, SITELINK, CALLOUT, etc. |
field_types |
array |
Optional | Filter by field type(s): HEADLINE, DESCRIPTION, MARKETING_IMAGE, etc. |
levels |
array |
Optional | Levels to query: CUSTOMER, CAMPAIGN, AD_GROUP, ASSET_GROUP. CAMPAIGN automatically includes ASSET_GROUP (PMax). Defaults to all levels. |
policy_approval_statuses |
array |
Optional | Filter by policy approval status(es). Useful for surfacing disapproved or limited assets without paginating through all results. |
include_change_history |
boolean |
Optional | Add added_at, added_by, last_modified_at, last_modified_by via change_event queries. Limited to last 30 days of Google history. |
include_conversion_breakdown |
boolean |
Optional | Include per-conversion-action breakdown on each asset row. Adds 4 extra GAQL queries and significantly increases response size. Default false. |
include_audience_signals |
boolean |
Optional | Include PMax audience signals per asset group. Shows which audiences (remarketing lists, custom segments, interests) are configured as signals, and the search themes: each entry has a signalType of AUDIENCE (audienceResourceName, plus audienceName when resolvable) or SEARCH_THEME (searchThemeText, approvalStatus, and disapprovalReasons when disapproved). |
include_asset_content |
boolean |
Optional | Resolve full asset content via a second query against the asset resource: sitelink link text + description lines, callout text, structured snippet values, call numbers, promotion targets, price offerings, and final URLs. Required for creative inventory / copy exports — without it, content is null for SITELINK, CALLOUT, STRUCTURED_SNIPPET, PROMOTION, CALL, PRICE, and LEAD_FORM assets. Adds 1 extra query per page. Default false. |
order_by |
string |
Optional | Sort results by: impressions (default), clicks, cost, conversions, ctr. Applied globally after merging all levels.impressions clicks cost conversions ctr |
limit |
integer |
Optional | Maximum rows to return per page (default: 20, max: 1000). Use cursor for subsequent pages.min: 1, max: 1000 |
cursor |
string |
Optional | Opaque cursor from the previous response's nextCursor. Pass it with otherwise identical parameters to get the next page; a cursor reused with different filters is rejected. Omit for the first page. |
connection_id |
string |
Optional | Optional ID of a specific connection to use for this call. Omit to use the actor's default connection for this network. Call <platform>_list_connections to discover available connection IDs. |
Examples
All assets last 30 days
{
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"reason": "Review asset performance across all levels"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_30_DAYS
Ad group assets last 7 days
{
"customer_id": "1234567890",
"date_preset": "LAST_7_DAYS",
"levels": [
"AD_GROUP"
],
"reason": "Ad group asset analysis"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_7_DAYS --levels AD_GROUP
PMax assets by campaign
{
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"levels": [
"CAMPAIGN"
],
"reason": "PMax asset group analysis"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --levels CAMPAIGN
Top headlines by impressions
{
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"field_types": [
"HEADLINE"
],
"order_by": "impressions",
"limit": 20,
"reason": "Top headline analysis"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --field-types HEADLINE --order-by impressions --limit 20
PMax with audience signals
{
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"levels": [
"ASSET_GROUP"
],
"include_audience_signals": true,
"reason": "PMax audience signal audit"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --levels ASSET_GROUP --include-audience-signals true
Creative inventory with sitelink copy
{
"customer_id": "1234567890",
"date_preset": "LAST_30_DAYS",
"asset_types": [
"SITELINK"
],
"include_asset_content": true,
"reason": "Export full sitelink copy and final URLs"
}
hopkin google asset-report get --customer-id 1234567890 --date-preset LAST_30_DAYS --asset-types SITELINK --include-asset-content true