1---2name: adwhiz3description: Manage Google Ads & Meta (Facebook) Ads from your AI coding tool. 99 MCP tools for auditing, creating, and optimizing ad accounts using natural language.4---5
6# AdWhiz — Google Ads & Meta Ads MCP Server
7
8AdWhiz is a hosted MCP server that connects your AI coding tool to the
9Google Ads API and Meta (Facebook) Graph API through a secure, authenticated
10proxy. It exposes **99 tools** across 7 categories so you can audit, create,
11and manage ad campaigns across both platforms using plain English.
12
13All API calls are authenticated via your personal `ADWHIZ_API_KEY` and routed
14through the AdWhiz server at `mcp.adwhiz.ai`. No Google or Meta credentials
15are stored by the skill — authentication is handled entirely server-side
16after you link your ad accounts at https://adwhiz.ai/connect.
17
18## Security & Permissions Model
19
20- **OAuth 2.0**: User authenticates with Google and/or Meta via AdWhiz's web
21 UI. Refresh tokens (Google) and long-lived access tokens (Meta) are encrypted
22 at rest (AES-256-GCM) and never exposed to the agent.
23- **API key scoping**: Each `ADWHIZ_API_KEY` is bound to a single user's
24 connected accounts. Cross-user access is not possible.
25- **Write safety**: All Google Ads write tools create entities in **PAUSED**
26 status by default. Meta write tools require explicit status parameters.
27- **Mutation logging**: Every mutation is recorded in the `get_operation_log`
28 tool for full auditability.
29- **Read-only by default**: 36 of 99 tools are strictly read-only and cannot
30 modify your accounts.
31- **Confirmation required**: Write tools require user confirmation before
32 executing via the agent's standard permission flow.
33- **No arbitrary code execution**: The MCP server is a hosted HTTP service.
34 No code is downloaded or executed on the user's machine beyond the thin
35 MCP client wrapper.
36
37## Google Ads Tools (70)
38
39### Account (2 tools) — Read-only
40| Tool | Description |
41|------|-------------|
42| `list_accounts` | List all accessible Google Ads accounts |
43| `get_account_info` | Get account details (currency, timezone, optimization score) |
44
45### Read (20 tools) — Read-only
46| Tool | Description |
47|------|-------------|
48| `list_campaigns` | List campaigns with status, type, budget, bidding strategy |
49| `get_campaign_performance` | Campaign metrics: cost, clicks, conversions, CTR, CPA, ROAS |
50| `list_ad_groups` | List ad groups with bids, filtered by campaign |
51| `list_ads` | List ads with headlines, descriptions, final URLs |
52| `list_keywords` | Keywords with match types, bids, quality scores |
53| `get_search_terms` | Search terms report (actual queries triggering ads) |
54| `list_negative_keywords` | Negative keywords at campaign, ad group, or account level |
55| `list_assets` | Sitelinks, callouts, structured snippets |
56| `list_conversion_actions` | Conversion actions with status, type, category |
57| `list_budgets` | Campaign budgets with associated campaigns |
58| `list_bidding_strategies` | Portfolio bidding strategies |
59| `list_audience_segments` | Audience targeting criteria |
60| `list_user_lists` | Remarketing/audience lists for targeting |
61| `get_operation_log` | Recent mutations performed via AdWhiz |
62| `list_recommendations` | Google Ads recommendations (add keywords, raise bids, fix ad strength) |
63| `get_change_history` | Change audit log: who changed what and when |
64| `list_geo_targets` | Geographic location targeting on campaigns |
65| `list_ad_schedules` | Ad schedule (dayparting) criteria on campaigns |
66| `list_labels` | Labels for organizing campaigns, ad groups, ads, keywords |
67| `generate_keyword_ideas` | Keyword ideas with search volume, competition, bid ranges |
68
69### Write (45 tools) — Requires user confirmation
70| Tool | Description |
71|------|-------------|
72| `create_campaign` | Create Search, Display, PMax, or Video campaign (starts PAUSED) |
73| `update_campaign` | Update campaign name |
74| `set_campaign_status` | Pause, enable, or remove a campaign |
75| `create_ad_group` | Create an ad group in a campaign |
76| `update_ad_group` | Update ad group name or CPC bid |
77| `set_ad_group_status` | Pause, enable, or remove an ad group |
78| `create_responsive_search_ad` | Create RSA with headlines + descriptions (starts PAUSED) |
79| `set_ad_status` | Pause, enable, or remove an ad |
80| `add_keywords` | Add keywords with match types and bids |
81| `update_keyword_bid` | Change a keyword's CPC bid |
82| `set_keyword_status` | Pause, enable, or remove a keyword |
83| `add_negative_keyword` | Add negative keyword at campaign or ad group level |
84| `remove_negative_keyword` | Remove a negative keyword |
85| `create_shared_negative_list` | Create a shared negative keyword list |
86| `add_to_shared_list` | Add keywords to a shared negative list |
87| `attach_shared_list` | Attach shared list to a campaign |
88| `create_sitelink` | Create a sitelink asset |
89| `create_callout` | Create a callout asset |
90| `create_structured_snippet` | Create a structured snippet asset |
91| `create_price_extension` | Create a price extension asset |
92| `link_asset_to_campaign` | Link asset to a campaign |
93| `unlink_asset_from_campaign` | Unlink asset from a campaign |
94| `create_conversion_action` | Create a conversion tracking action |
95| `update_conversion_action` | Update conversion action name or status |
96| `create_budget` | Create a campaign budget |
97| `update_budget` | Update budget amount or name |
98| `create_bidding_strategy` | Create a portfolio bidding strategy |
99| `add_audience_to_campaign` | Add audience targeting to a campaign |
100| `update_responsive_search_ad` | Update RSA headlines, descriptions, or URLs |
101| `link_asset_to_ad_group` | Link asset to an ad group |
102| `unlink_asset_from_ad_group` | Remove asset-to-ad-group linkage |
103| `upload_click_conversions` | Upload offline click conversions (gclid-based) |
104| `upload_customer_list` | Upload hashed PII to Customer Match user list |
105| `apply_recommendation` | Apply a Google Ads recommendation |
106| `dismiss_recommendation` | Dismiss a Google Ads recommendation |
107| `add_geo_targeting` | Add geographic location targeting to a campaign |
108| `remove_geo_targeting` | Remove geographic location target from a campaign |
109| `add_ad_schedule` | Add ad schedule (dayparting) to a campaign |
110| `remove_ad_schedule` | Remove ad schedule criterion from a campaign |
111| `set_device_bid_adjustment` | Set device bid adjustment (mobile, desktop, tablet) |
112| `set_demographic_targeting` | Set demographic targeting (age, gender, income) |
113| `create_label` | Create a label for organizing entities |
114| `apply_label` | Apply a label to a campaign, ad group, or ad |
115| `remove_label` | Remove a label from a campaign, ad group, or ad |
116| `create_asset_group` | Create an asset group for Performance Max campaigns |
117
118### Audit (2 tools) — Read-only analysis
119| Tool | Description |
120|------|-------------|
121| `run_mini_audit` | Quick 3-metric audit: wasted spend, best/worst CPA, projected savings |
122| `run_full_audit` | Comprehensive audit: campaigns, keywords, search terms, issues, recommendations |
123
124### Query (1 tool) — Read-only, bounded
125| Tool | Description |
126|------|-------------|
127| `run_gaql_query` | Execute a read-only GAQL query against your account (max 1,000 rows, SELECT only) |
128
129## Meta (Facebook) Ads Tools (29)
130
131### Meta Read (13 tools) — Read-only
132| Tool | Description |
133|------|-------------|
134| `meta_list_ad_accounts` | List all connected Meta ad accounts |
135| `meta_list_campaigns` | List campaigns with status, objective, budget |
136| `meta_get_campaign_insights` | Per-campaign metrics: spend, clicks, CTR, CPA, frequency (with optional breakdowns) |
137| `meta_list_ad_sets` | List ad sets with targeting, status, budget |
138| `meta_list_ads` | List ads with creative details (title, body, image URL) |
139| `meta_get_account_insights` | Account-level aggregated metrics with daily breakdown |
140| `meta_get_ad_set_insights` | Per-ad-set performance metrics: spend, clicks, CPA, frequency |
141| `meta_get_ad_insights` | Per-ad performance metrics: spend, clicks, conversions, CPA |
142| `meta_get_ad_creatives` | List ad creatives or get creative for a specific ad |
143| `meta_search_interests` | Search targetable interest audiences by keyword |
144| `meta_search_geo_locations` | Search geographic locations for targeting |
145| `meta_estimate_audience_size` | Estimate reach of a targeting spec |
146| `meta_get_account_pages` | List Facebook pages available for running ads |
147
148### Meta Write (15 tools) — Requires user confirmation
149| Tool | Description |
150|------|-------------|
151| `meta_set_campaign_status` | Pause or activate a Meta campaign |
152| `meta_update_campaign_budget` | Update a Meta campaign's daily or lifetime budget |
153| `meta_set_ad_set_status` | Pause or activate a Meta ad set |
154| `meta_set_ad_status` | Pause or activate a Meta ad |
155| `meta_create_campaign` | Create a new Meta campaign with objective and budget |
156| `meta_create_ad_set` | Create an ad set with targeting, budget, optimization goal |
157| `meta_create_ad_creative` | Create ad creative with image/video, link, CTA |
158| `meta_create_ad` | Create an ad linking an ad set to a creative |
159| `meta_update_campaign` | Update campaign name, budget, end time, spend cap |
160| `meta_update_ad_set` | Update ad set name, budget, targeting, schedule |
161| `meta_update_ad` | Update ad name, creative, or status |
162| `meta_create_custom_audience` | Create custom audience from customer lists or website visitors |
163| `meta_create_lookalike_audience` | Create lookalike audience from source audience |
164| `meta_upload_ad_image` | Upload image from URL for ad creatives |
165| `meta_duplicate_campaign` | Duplicate campaign with all ad sets and ads |
166
167### Meta Audit (1 tool) — Read-only analysis
168| Tool | Description |
169|------|-------------|
170| `meta_run_mini_audit` | Quick health audit: score (0-100) across wasted spend, CPA efficiency, budget utilization, creative fatigue |
171
172## MCP Server Configuration
173
174AdWhiz uses **HTTP transport** to connect to the hosted MCP server. No npm
175packages are downloaded or executed at runtime.
176
177```json
178{
179 "mcpServers": {
180 "adwhiz": {
181 "transport": "http",
182 "url": "https://mcp.adwhiz.ai/mcp",
183 "headers": {
184 "Authorization": "Bearer ${ADWHIZ_API_KEY}"
185 }
186 }
187 }
188}
189```
190
191## Quick Install
192
193```bash
194clawhub install adwhiz
195```
196
197This adds the MCP server configuration above to your settings. You will be
198prompted to provide your `ADWHIZ_API_KEY`.
199
200## Getting Your API Key
201
2021. Sign up at https://adwhiz.ai
2032. Connect your Google Ads and/or Meta Ads account via OAuth
2043. Copy your API key from the dashboard settings page
205
206## Example Prompts
207
208### Google Ads
209- "Audit my Google Ads account and show the top 5 waste areas"
210- "Pause all campaigns with CPA above $150"
211- "Add these negative keywords to my Search campaigns: [list]"
212- "Create a new Search campaign targeting lawyers in New York with $100/day budget"
213- "Show me search terms wasting money and suggest negatives"
214- "What is my account's average Quality Score this month?"
215
216### Meta Ads
217- "Audit my Meta Ads account and show the health score"
218- "List all active Meta campaigns with their spend and CTR"
219- "Pause the Meta campaign with the highest frequency"
220- "Show me daily spend trends for my Meta account over the last 30 days"
221- "Which Meta ad sets have the worst CPA?"
222
223## Data Handling
224
225- AdWhiz only accesses the ad accounts you explicitly linked
226- No campaign data is stored beyond the duration of each API request
227- Mutation logs are retained for 30 days for auditability
228- You can revoke access at any time from https://adwhiz.ai/connect
229
230## Documentation
231
232Full documentation: https://adwhiz.ai/docs