AdWhiz — Google Ads & Meta Ads MCP Server
AdWhiz is a hosted MCP server that connects your AI coding tool to the
Google Ads API and Meta (Facebook) Graph API through a secure, authenticated
proxy. It exposes 99 tools across 7 categories so you can audit, create,
and manage ad campaigns across both platforms using plain English.
All API calls are authenticated via your personal ADWHIZ_API_KEY and routed
through the AdWhiz server at mcp.adwhiz.ai. No Google or Meta credentials
are stored by the skill — authentication is handled entirely server-side
after you link your ad accounts at https://adwhiz.ai/connect.
Security & Permissions Model
- OAuth 2.0: User authenticates with Google and/or Meta via AdWhiz's web
UI. Refresh tokens (Google) and long-lived access tokens (Meta) are encrypted
at rest (AES-256-GCM) and never exposed to the agent.
- API key scoping: Each
ADWHIZ_API_KEY is bound to a single user's
connected accounts. Cross-user access is not possible.
- Write safety: All Google Ads write tools create entities in PAUSED
status by default. Meta write tools require explicit status parameters.
- Mutation logging: Every mutation is recorded in the
get_operation_log
tool for full auditability.
- Read-only by default: 36 of 99 tools are strictly read-only and cannot
modify your accounts.
- Confirmation required: Write tools require user confirmation before
executing via the agent's standard permission flow.
- No arbitrary code execution: The MCP server is a hosted HTTP service.
No code is downloaded or executed on the user's machine beyond the thin
MCP client wrapper.
Google Ads Tools (70)
Account (2 tools) — Read-only
| Tool |
Description |
list_accounts |
List all accessible Google Ads accounts (auto-expands MCC child accounts) |
get_account_info |
Get account details (currency, timezone, optimization score) |
Read (20 tools) — Read-only
| Tool |
Description |
list_campaigns |
List campaigns with status, type, budget, bidding strategy |
get_campaign_performance |
Campaign metrics: cost, clicks, conversions, CTR, CPA, ROAS |
list_ad_groups |
List ad groups with bids, filtered by campaign |
list_ads |
List ads with headlines, descriptions, final URLs |
list_keywords |
Keywords with match types, bids, quality scores |
get_search_terms |
Search terms report (actual queries triggering ads) |
list_negative_keywords |
Negative keywords at campaign, ad group, or account level |
list_assets |
Sitelinks, callouts, structured snippets |
list_conversion_actions |
Conversion actions with status, type, category |
list_budgets |
Campaign budgets with associated campaigns |
list_bidding_strategies |
Portfolio bidding strategies |
list_audience_segments |
Audience targeting criteria |
list_user_lists |
Remarketing/audience lists for targeting |
get_operation_log |
Recent mutations performed via AdWhiz |
list_recommendations |
Google Ads recommendations (add keywords, raise bids, fix ad strength) |
get_change_history |
Change audit log: who changed what and when |
list_geo_targets |
Geographic location targeting on campaigns |
list_ad_schedules |
Ad schedule (dayparting) criteria on campaigns |
list_labels |
Labels for organizing campaigns, ad groups, ads, keywords |
generate_keyword_ideas |
Keyword ideas with search volume, competition, bid ranges |
Write (45 tools) — Requires user confirmation
| Tool |
Description |
create_campaign |
Create Search, Display, PMax, or Video campaign (starts PAUSED) |
update_campaign |
Update campaign name |
set_campaign_status |
Pause, enable, or remove a campaign |
create_ad_group |
Create an ad group in a campaign |
update_ad_group |
Update ad group name or CPC bid |
set_ad_group_status |
Pause, enable, or remove an ad group |
create_responsive_search_ad |
Create RSA with headlines + descriptions (starts PAUSED) |
set_ad_status |
Pause, enable, or remove an ad |
add_keywords |
Add keywords with match types and bids |
update_keyword_bid |
Change a keyword's CPC bid |
set_keyword_status |
Pause, enable, or remove a keyword |
add_negative_keyword |
Add negative keyword at campaign or ad group level |
remove_negative_keyword |
Remove a negative keyword |
create_shared_negative_list |
Create a shared negative keyword list |
add_to_shared_list |
Add keywords to a shared negative list |
attach_shared_list |
Attach shared list to a campaign |
create_sitelink |
Create a sitelink asset |
create_callout |
Create a callout asset |
create_structured_snippet |
Create a structured snippet asset |
create_price_extension |
Create a price extension asset |
link_asset_to_campaign |
Link asset to a campaign |
unlink_asset_from_campaign |
Unlink asset from a campaign |
create_conversion_action |
Create a conversion tracking action |
update_conversion_action |
Update conversion action name or status |
create_budget |
Create a campaign budget |
update_budget |
Update budget amount or name |
create_bidding_strategy |
Create a portfolio bidding strategy |
add_audience_to_campaign |
Add audience targeting to a campaign |
update_responsive_search_ad |
Update RSA headlines, descriptions, or URLs |
link_asset_to_ad_group |
Link asset to an ad group |
unlink_asset_from_ad_group |
Remove asset-to-ad-group linkage |
upload_click_conversions |
Upload offline click conversions (gclid-based) |
upload_customer_list |
Upload hashed PII to Customer Match user list |
apply_recommendation |
Apply a Google Ads recommendation |
dismiss_recommendation |
Dismiss a Google Ads recommendation |
add_geo_targeting |
Add geographic location targeting to a campaign |
remove_geo_targeting |
Remove geographic location target from a campaign |
add_ad_schedule |
Add ad schedule (dayparting) to a campaign |
remove_ad_schedule |
Remove ad schedule criterion from a campaign |
set_device_bid_adjustment |
Set device bid adjustment (mobile, desktop, tablet) |
set_demographic_targeting |
Set demographic targeting (age, gender, income) |
create_label |
Create a label for organizing entities |
apply_label |
Apply a label to a campaign, ad group, or ad |
remove_label |
Remove a label from a campaign, ad group, or ad |
create_asset_group |
Create an asset group for Performance Max campaigns |
Audit (2 tools) — Read-only analysis
| Tool |
Description |
run_mini_audit |
Quick 3-metric audit: wasted spend, best/worst CPA, projected savings |
run_full_audit |
Comprehensive audit: campaigns, keywords, search terms, issues, recommendations |
Query (1 tool) — Read-only, bounded
| Tool |
Description |
run_gaql_query |
Execute a read-only GAQL query against your account (max 1,000 rows, SELECT only) |
Meta (Facebook) Ads Tools (29)
Meta Read (13 tools) — Read-only
| Tool |
Description |
meta_list_ad_accounts |
List all connected Meta ad accounts |
meta_list_campaigns |
List campaigns with status, objective, budget |
meta_get_campaign_insights |
Per-campaign metrics: spend, clicks, CTR, CPA, frequency (with optional breakdowns) |
meta_list_ad_sets |
List ad sets with targeting, status, budget |
meta_list_ads |
List ads with creative details (title, body, image URL) |
meta_get_account_insights |
Account-level aggregated metrics with daily breakdown |
meta_get_ad_set_insights |
Per-ad-set performance metrics: spend, clicks, CPA, frequency |
meta_get_ad_insights |
Per-ad performance metrics: spend, clicks, conversions, CPA |
meta_get_ad_creatives |
List ad creatives or get creative for a specific ad |
meta_search_interests |
Search targetable interest audiences by keyword |
meta_search_geo_locations |
Search geographic locations for targeting |
meta_estimate_audience_size |
Estimate reach of a targeting spec |
meta_get_account_pages |
List Facebook pages available for running ads |
Meta Write (15 tools) — Requires user confirmation
| Tool |
Description |
meta_set_campaign_status |
Pause or activate a Meta campaign |
meta_update_campaign_budget |
Update a Meta campaign's daily or lifetime budget |
meta_set_ad_set_status |
Pause or activate a Meta ad set |
meta_set_ad_status |
Pause or activate a Meta ad |
meta_create_campaign |
Create a new Meta campaign with objective and budget |
meta_create_ad_set |
Create an ad set with targeting, budget, optimization goal |
meta_create_ad_creative |
Create ad creative with image/video, link, CTA |
meta_create_ad |
Create an ad linking an ad set to a creative |
meta_update_campaign |
Update campaign name, budget, end time, spend cap |
meta_update_ad_set |
Update ad set name, budget, targeting, schedule |
meta_update_ad |
Update ad name, creative, or status |
meta_create_custom_audience |
Create custom audience from customer lists or website visitors |
meta_create_lookalike_audience |
Create lookalike audience from source audience |
meta_upload_ad_image |
Upload image from URL for ad creatives |
meta_duplicate_campaign |
Duplicate campaign with all ad sets and ads |
Meta Audit (1 tool) — Read-only analysis
| Tool |
Description |
meta_run_mini_audit |
Quick health audit: score (0-100) across wasted spend, CPA efficiency, budget utilization, creative fatigue |
MCP Server Configuration
AdWhiz uses HTTP transport to connect to the hosted MCP server. No npm
packages are downloaded or executed at runtime.
{
"mcpServers": {
"adwhiz": {
"transport": "http",
"url": "https://mcp.adwhiz.ai/mcp",
"headers": {
"Authorization": "Bearer ${ADWHIZ_API_KEY}"
}
}
}
}
REST API (Alternative to MCP)
For platforms that cannot use the MCP protocol (GPT Actions, Dify, Coze, or
any HTTP-based workflow), AdWhiz also exposes all 99 tools as a standard
REST API with an OpenAPI 3.1.0 spec:
# Example: list campaigns via REST API
curl -X POST https://mcp.adwhiz.ai/api/v1/tools/list_campaigns \
-H "Authorization: Bearer $ADWHIZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"customer_id": "1234567890"}'
Import the OpenAPI spec URL into any platform that supports OpenAPI actions
to auto-discover all 99 tools.
Quick Install
clawhub install adwhiz
This adds the MCP server configuration above to your settings. You will be
prompted to provide your ADWHIZ_API_KEY.
Getting Your API Key
- Sign up at https://adwhiz.ai
- Connect your Google Ads and/or Meta Ads account via OAuth
- Copy your API key from the dashboard settings page
Example Prompts
Google Ads
- "Audit my Google Ads account and show the top 5 waste areas"
- "Pause all campaigns with CPA above $150"
- "Add these negative keywords to my Search campaigns: [list]"
- "Create a new Search campaign targeting lawyers in New York with $100/day budget"
- "Show me search terms wasting money and suggest negatives"
- "What is my account's average Quality Score this month?"
Meta Ads
- "Audit my Meta Ads account and show the health score"
- "List all active Meta campaigns with their spend and CTR"
- "Pause the Meta campaign with the highest frequency"
- "Show me daily spend trends for my Meta account over the last 30 days"
- "Which Meta ad sets have the worst CPA?"
Data Handling
- AdWhiz only accesses the ad accounts you explicitly linked
- No campaign data is stored beyond the duration of each API request
- Mutation logs are retained for 30 days for auditability
- You can revoke access at any time from https://adwhiz.ai/connect
Documentation
Full documentation: https://adwhiz.ai/docs
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---56# AdWhiz — Google Ads & Meta Ads MCP Server78AdWhiz is a hosted MCP server that connects your AI coding tool to the9Google Ads API and Meta (Facebook) Graph API through a secure, authenticated10proxy. It exposes **99 tools** across 7 categories so you can audit, create,11and manage ad campaigns across both platforms using plain English.1213All API calls are authenticated via your personal `ADWHIZ_API_KEY` and routed14through the AdWhiz server at `mcp.adwhiz.ai`. No Google or Meta credentials15are stored by the skill — authentication is handled entirely server-side16after you link your ad accounts at https://adwhiz.ai/connect.1718## Security & Permissions Model1920- **OAuth 2.0**: User authenticates with Google and/or Meta via AdWhiz's web21 UI. Refresh tokens (Google) and long-lived access tokens (Meta) are encrypted22 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's24 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 cannot30 modify your accounts.31- **Confirmation required**: Write tools require user confirmation before32 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 thin35 MCP client wrapper.3637## Google Ads Tools (70)3839### Account (2 tools) — Read-only40| Tool | Description |41|------|-------------|42| `list_accounts` | List all accessible Google Ads accounts (auto-expands MCC child accounts) |43| `get_account_info` | Get account details (currency, timezone, optimization score) |4445### Read (20 tools) — Read-only46| 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 |6869### Write (45 tools) — Requires user confirmation70| 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 |117118### Audit (2 tools) — Read-only analysis119| 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 |123124### Query (1 tool) — Read-only, bounded125| Tool | Description |126|------|-------------|127| `run_gaql_query` | Execute a read-only GAQL query against your account (max 1,000 rows, SELECT only) |128129## Meta (Facebook) Ads Tools (29)130131### Meta Read (13 tools) — Read-only132| 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 |147148### Meta Write (15 tools) — Requires user confirmation149| 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 |166167### Meta Audit (1 tool) — Read-only analysis168| Tool | Description |169|------|-------------|170| `meta_run_mini_audit` | Quick health audit: score (0-100) across wasted spend, CPA efficiency, budget utilization, creative fatigue |171172## MCP Server Configuration173174AdWhiz uses **HTTP transport** to connect to the hosted MCP server. No npm175packages are downloaded or executed at runtime.176177```json178{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```190191## REST API (Alternative to MCP)192193For platforms that cannot use the MCP protocol (GPT Actions, Dify, Coze, or194any HTTP-based workflow), AdWhiz also exposes all 99 tools as a standard195REST API with an OpenAPI 3.1.0 spec:196197- **OpenAPI spec**: https://mcp.adwhiz.ai/api/v1/openapi.json198- **Tool listing**: https://mcp.adwhiz.ai/api/v1/tools199- **Tool execution**: `POST https://mcp.adwhiz.ai/api/v1/tools/{tool_name}`200201```bash202# Example: list campaigns via REST API203curl -X POST https://mcp.adwhiz.ai/api/v1/tools/list_campaigns \204 -H "Authorization: Bearer $ADWHIZ_API_KEY" \205 -H "Content-Type: application/json" \206 -d '{"customer_id": "1234567890"}'207```208209Import the OpenAPI spec URL into any platform that supports OpenAPI actions210to auto-discover all 99 tools.211212## Quick Install213214```bash215clawhub install adwhiz216```217218This adds the MCP server configuration above to your settings. You will be219prompted to provide your `ADWHIZ_API_KEY`.220221## Getting Your API Key2222231. Sign up at https://adwhiz.ai2242. Connect your Google Ads and/or Meta Ads account via OAuth2253. Copy your API key from the dashboard settings page226227## Example Prompts228229### Google Ads230- "Audit my Google Ads account and show the top 5 waste areas"231- "Pause all campaigns with CPA above $150"232- "Add these negative keywords to my Search campaigns: [list]"233- "Create a new Search campaign targeting lawyers in New York with $100/day budget"234- "Show me search terms wasting money and suggest negatives"235- "What is my account's average Quality Score this month?"236237### Meta Ads238- "Audit my Meta Ads account and show the health score"239- "List all active Meta campaigns with their spend and CTR"240- "Pause the Meta campaign with the highest frequency"241- "Show me daily spend trends for my Meta account over the last 30 days"242- "Which Meta ad sets have the worst CPA?"243244## Data Handling245246- AdWhiz only accesses the ad accounts you explicitly linked247- No campaign data is stored beyond the duration of each API request248- Mutation logs are retained for 30 days for auditability249- You can revoke access at any time from https://adwhiz.ai/connect250251## Documentation252253Full documentation: https://adwhiz.ai/docs