Connect your AI Agents to Google Ads in minutes

Merge lets you securely connect your agents to Google Ads and thousands of tools instantly

Available tools

list_ad_groups

List ad groups for a customer with optional filtering by campaign and status. Use getadgroup to retrieve a specific ad group.

get_ad_group

Get details of a specific ad group.

create_ad_group

Create a new ad group within a campaign. Required: customerid, campaignid (from listcampaigns), name. Use listcampaigns to find a valid campaign_id.

update_ad_group

Update an ad group. Set status=REMOVED to delete. Use listadgroups to find ad group IDs.

list_ads

List ads for a customer with optional filtering by ad group and status. Use get_ad to retrieve a specific ad.

get_ad

Get details of a specific ad.

create_ad

Create a Responsive Search Ad. Headlines: 3-15 required (max 30 chars each). Descriptions: 2-4 required (max 90 chars each). Final URLs: at least 1. Use listadgroups to find adgroupid. Note: ad content cannot be edited after creation; to change it, create a new ad.

update_ad

Update an ad (status only). Note: ad content (headlines, descriptions, URLs) cannot be edited after creation. Set status=REMOVED to delete. Use list_ads to find ad IDs.

list_campaign_budgets

List campaign budgets for a customer. Budgets are required when creating campaigns. Use this to discover available budgets before calling create_campaign.

create_campaign_budget

Create a new campaign budget. The budget resource name returned here is required when creating campaigns. Use listcampaignbudgets to find existing budgets.

list_campaigns

List campaigns for a customer with optional filtering by status, channel type, and name. Use get_campaign to retrieve a specific campaign.

get_campaign

Get details of a specific campaign.

create_campaign

Create a new campaign. Required parameters: customerid, name, advertisingchanneltype, campaignbudget (from listcampaignbudgets), biddingstrategytype. Use listcampaignbudgets to find a valid campaign_budget resource name.

update_campaign

Update a campaign. Set status=REMOVED to delete. Use listcampaigns or getcampaign to find campaign IDs.

list_accessible_customers

List all Google Ads customer account IDs accessible with the current credentials. Use the customer_id from this result when calling other tools.

get_customer

Get details of a specific Google Ads customer account (ID, name, currency, timezone).

list_keywords

List keywords (ad group criteria) for a customer with optional filtering by ad group and status.

create_keywords

Create one or more keywords in an ad group. Batch operation: create multiple keywords efficiently in a single call. Use listadgroups to find adgroupid.

update_keyword

Update a keyword. Use listkeywords to find criterionid. Set status=REMOVED to delete, or use remove_keyword for permanent removal.

remove_keyword

Permanently remove a keyword from an ad group. Use listkeywords to find criterionid. Alternatively, use update_keyword with status=REMOVED to preserve history.

search_google_ads

Run a custom GAQL (Google Ads Query Language) query to retrieve arbitrary resource data and metrics. Use this for custom reports, performance metrics, or any data not available through structured tools. Example: SELECT campaign.name, metrics.clicks, metrics.impressions FROM campaign WHERE campaign.status = ENABLED

validate_credential

Validate Google Ads OAuth2 credentials and developer token by listing accessible customer accounts.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's Google Ads  MCP server

FAQs on using Merge's Google Ads  MCP server

Explore other MCP servers built and managed by Merge

clay
Clay
clickup
ClickUp
clinicaltrials
ClinicalTrials.gov
cloudflare
Cloudflare
cms_coverage
CMS Coverage
coda
Coda
compliancequest
ComplianceQuest
concur
Concur
confluence
Confluence
contentful
Contentful
crustdata
Crustdata
databricks
Databricks
datadog
Datadog
docusign
DocuSign
doordash
DoorDash
dropbox
Dropbox
duffel
Duffel
dynamics365
Dynamics 365 Sales
exa
Exa
expensify
Expensify
factset
FactSet
figma
Figma
firecrawl
Firecrawl
fireflies
Fireflies

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now