Google Ads MCP server
Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Google Ads, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.
Overview
This tool pack gives an agent read-only reporting access to a Google Ads account, covering account summaries, campaigns, ad groups, keywords, search terms, conversion actions, budgets, and change history. All tools are read-only; none can create, modify, or delete account data.
For setup instructions, see SnapLogic MCP Server quickstart.
Example Prompts
- How did our Google Ads account perform over the last 30 days?
- Give me total spend and conversions for account 1234567890 this month
- What currency and time zone is this Google Ads account reporting in?
- Summarise account performance between 2026-06-01 and 2026-06-30
- Show me the headline numbers for last quarter across the whole account
- Break down ad group performance inside campaign 987654321
- Which ad groups are spending the most this month?
- Show me ad groups with the worst cost per conversion over the last 30 days
- List the top 20 ad groups by cost for last week
- How did the ad groups in our brand campaign perform in June?
Tools
| Tool Name | Functions |
|---|---|
| GoogleAdsGetAccountSummary | Account-level spend, clicks, impressions and conversions plus currency and time zone. |
| GoogleAdsGetAdGroupPerformance | Per-ad-group performance, optionally scoped to one campaign. |
| GoogleAdsGetBudgetUtilization | Campaign budgets, recommended budgets and actual spend against them. |
| GoogleAdsGetCampaignPerformance | Per-campaign spend, clicks, CTR, CPC and conversions, ranked by cost. |
| GoogleAdsGetChangeHistory | Audit trail of account changes — who changed what, when, old and new values. |
| GoogleAdsGetConversionActions | Conversion action configuration and recorded conversions. |
| GoogleAdsGetKeywordPerformance | Keyword-level spend, CTR, CPC, conversions and Quality Score. |
| GoogleAdsGetSearchTerms | Actual search queries that triggered ads, ranked by impressions. |
Set up the MCP Server tools
- Download google-ads_tools.zip.
- In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded google-ads_tools.zip. Designer unpacks each pipeline into the project.
- Attach the required account to the connectivity snaps (see Connection Setup).
- Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.
Configure account
Attach an API Suite account (OAuth 2.0 or Bearer token) to the HTTP Client snap in Designer after import.
These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.
See the SnapLogic account documentation for this connector: API Suite Account Configuration.
GoogleAdsGetAccountSummary
Returns a top-level performance summary for a Google Ads account, including total spend, clicks, impressions, and conversions for a chosen date range. Use it as the first call when a user asks for an account overview or needs the account's currency and time zone.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on, digits only, no dashes. |
| developer_token* | string | — | Google Ads API developer token, sent as the developer-token header. |
| login_customer_id | string | — | Manager (MCC) account ID to authorise the call, sent as login-customer-id. Omit for direct account access. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range, e.g. LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. Must be paired with end_date. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. Must be paired with start_date. |
* Required parameter.
Try asking:
- How did our Google Ads account perform over the last 30 days?
- Give me total spend and conversions for account 1234567890 this month
- What currency and time zone is this Google Ads account reporting in?
- Summarise account performance between 2026-06-01 and 2026-06-30
- Show me the headline numbers for last quarter across the whole account
GoogleAdsGetAdGroupPerformance
Returns performance data for ad groups across the account, ordered by spend, with an option to scope the report to a single campaign. Use it to identify which ad groups are driving or dragging results within a campaign.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
| campaign_id | string | — | Restrict the report to ad groups in this campaign. Omit to cover the whole account. |
| limit | string | 100 |
Maximum ad groups returned, ordered by cost descending. Default 100. |
* Required parameter.
Try asking:
- Break down ad group performance inside campaign 987654321
- Which ad groups are spending the most this month?
- Show me ad groups with the worst cost per conversion over the last 30 days
- List the top 20 ad groups by cost for last week
- How did the ad groups in our brand campaign perform in June?
GoogleAdsGetBudgetUtilization
Shows each campaign's budget settings and actual spend side by side, including Google's recommended budget, so you can see where budgets are being consumed, throttled, or underutilized. Results cover enabled campaigns by default; you can change the status filter to include paused campaigns.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
| campaign_status | string | ENABLED |
Campaign status to include, matched exactly. Default ENABLED; e.g. PAUSED. |
* Required parameter.
Try asking:
- Which campaigns are hitting their daily budget cap?
- Show me budget versus actual spend for all enabled campaigns this month
- Where is Google recommending we increase budget?
- Are any campaigns underspending their budget over the last 30 days?
- Include paused campaigns in the budget utilisation report
GoogleAdsGetCampaignPerformance
Returns performance data for all campaigns in an account, ordered by spend, covering cost, clicks, CTR, and conversions. Use it to compare campaigns, find the biggest spenders, or get campaign IDs for use with the ad group and keyword tools.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if the call is authorised through a manager account. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
| limit | string | 50 |
Maximum campaigns returned, ordered by cost descending. Default 50. |
* Required parameter.
Try asking:
- Which campaigns spent the most last month?
- Show me campaign performance for the last 7 days with cost, clicks and conversions
- What's the cost per conversion on each of our campaigns this month?
- List our top 10 campaigns by spend between 2026-05-01 and 2026-05-31
- Which campaigns have a low CTR relative to their spend?
GoogleAdsGetChangeHistory
Returns an audit trail of account changes, showing who changed what and when, with old and new values for each edit. Use it when a performance shift occurs and you need to identify what was modified.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Present on the pipeline for consistency but not used by this query — supply start_date and end_date instead. |
| start_date* | string | — | Start of the change window. Required: the query filters change_event.change_date_time directly. |
| end_date* | string | — | End of the change window. Required. |
| resource_type | string | — | Restrict to one changed resource type, e.g. CAMPAIGN, AD_GROUP, AD_GROUP_CRITERION. Omit for all. |
| limit | string | 1000 |
Maximum change events returned, newest first. Default 1000. |
* Required parameter.
Try asking:
- What changed in the account between 2026-06-01 and 2026-06-15?
- Who edited our campaigns last week and what did they change?
- Show me all ad group changes made between 2026-05-01 and 2026-05-31
- Performance dropped on the 12th — what was modified around then?
- List changes made through the API rather than the UI in the last two weeks
GoogleAdsGetConversionActions
Lists the conversion actions configured in the account along with the conversions each recorded in a date range. Use it to understand how conversions are counted and attributed, or to troubleshoot unexpectedly high or double-counted numbers.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
* Required parameter.
Try asking:
- What conversion actions are set up in this account?
- Which conversion actions are primary for goal and which are secondary?
- Show me conversions by conversion action for the last 30 days
- What attribution model and counting type is each conversion action using?
- Why are our conversion numbers so high — is anything counting every conversion?
GoogleAdsGetKeywordPerformance
Returns keyword-level performance including spend, clicks, CTR, conversions, and Quality Score, ordered by cost. Use it for bid and Quality Score analysis, such as finding expensive keywords that do not convert.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
| campaign_id | string | — | Restrict the report to keywords in this campaign. |
| ad_group_id | string | — | Declared on the pipeline but not applied to the query in the current build — use campaign_id to narrow results. |
| limit | string | 200 |
Maximum keywords returned, ordered by cost descending. Default 200. |
* Required parameter.
Try asking:
- Which keywords are costing us the most with no conversions?
- Show me keyword performance with Quality Scores for campaign 987654321
- What are our top 50 keywords by spend last month?
- Which keywords have a Quality Score below 5?
- Compare exact match versus phrase match keyword performance this month
GoogleAdsGetSearchTerms
Returns the actual search queries that triggered ads, with clicks, impressions, CTR, and conversions for each. Use it for negative keyword research or to find high-converting queries that should become their own keywords.
| Parameter | Type | Default | Description |
|---|---|---|---|
| customer_id* | string | — | Google Ads customer ID to report on. |
| developer_token* | string | — | Google Ads API developer token. |
| login_customer_id | string | — | Manager (MCC) account ID, if applicable. |
| date_range | string | LAST_30_DAYS |
Named Google Ads date range. Default LAST_30_DAYS. Ignored when start_date and end_date are both supplied. |
| start_date | string | — | Start of an explicit reporting window, YYYY-MM-DD. |
| end_date | string | — | End of an explicit reporting window, YYYY-MM-DD. |
| campaign_id | string | — | Restrict the report to search terms from this campaign. |
| limit | string | 500 |
Maximum search terms returned, ordered by impressions descending. Default 500. |
* Required parameter.
Try asking:
- What search terms are triggering our ads but never converting?
- Show me the top search queries by impressions for the last 30 days
- Find search terms in campaign 987654321 that we should add as negatives
- Which search terms converted well but aren't keywords yet?
- Pull the search terms report for June and show cost per conversion