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 102 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 INLINECODE3
tool for full auditability.
- - Read-only by default: 39 of 102 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 |
|---|
| INLINECODE4 | List all accessible Google Ads accounts (auto-expands MCC child accounts) |
| INLINECODE5 |
Get account details (currency, timezone, optimization score) |
Read (20 tools) — Read-only
| Tool | Description |
|---|
| INLINECODE6 | List campaigns with status, type, budget, bidding strategy |
| INLINECODE7 |
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 |
|---|
| INLINECODE26 | Create Search, Display, PMax, or Video campaign (starts PAUSED) |
| INLINECODE27 |
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 |
|---|
| INLINECODE71 | Quick 3-metric audit: wasted spend, best/worst CPA, projected savings |
| INLINECODE72 |
Comprehensive audit: campaigns, keywords, search terms, issues, recommendations |
Query (1 tool) — Read-only, bounded
| Tool | Description |
|---|
| INLINECODE73 | Execute a read-only GAQL query against your account (max 1,000 rows, SELECT only) |
Meta (Facebook) Ads Tools (32)
Meta Read (15 tools) — Read-only
| Tool | Description |
|---|
| INLINECODE74 | List all connected Meta ad accounts |
| INLINECODE75 |
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, and promoted_object |
|
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_get_change_history | View recent changes (audit log) — who changed what and when |
|
meta_get_instagram_media | List Instagram media with Media V2 IDs for partnership/branded content ads |
Meta Write (16 tools) — Requires user confirmation
| Tool | Description |
|---|
| INLINECODE89 | Pause or activate a Meta campaign |
| INLINECODE90 |
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. Supports partnership ads via
source_instagram_media_id or
object_story_id |
|
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_upload_partnership_video | Upload Instagram creator video via partnership ad code for branded content ads |
|
meta_duplicate_campaign | Duplicate campaign with all ad sets and ads |
Meta Audit (1 tool) — Read-only analysis
| Tool | Description |
|---|
| INLINECODE107 | 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.
CODEBLOCK0
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 102 tools as a standard
REST API with an OpenAPI 3.1.0 spec:
- - OpenAPI spec: https://mcp.adwhiz.ai/api/v1/openapi.json
- Tool listing: https://mcp.adwhiz.ai/api/v1/tools
- Tool execution: INLINECODE108
CODEBLOCK1
Import the OpenAPI spec URL into any platform that supports OpenAPI actions
to auto-discover all 102 tools.
Quick Install
CODEBLOCK2
This adds the MCP server configuration above to your settings. You will be
prompted to provide your ADWHIZ_API_KEY.
Getting Your API Key
- 1. 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
AdWhiz — Google Ads 和 Meta Ads MCP 服务器
AdWhiz 是一个托管的 MCP 服务器,通过安全、经过身份验证的代理,将您的 AI 编码工具连接到 Google Ads API 和 Meta(Facebook)Graph API。它提供了横跨 7 个类别的 102 个工具,让您能够使用纯英语在两个平台上审计、创建和管理广告活动。
所有 API 调用均通过您的个人 ADWHIZAPIKEY 进行身份验证,并通过 mcp.adwhiz.ai 上的 AdWhiz 服务器路由。该技能不会存储任何 Google 或 Meta 凭据——在您通过 https://adwhiz.ai/connect 关联广告账户后,身份验证完全在服务器端处理。
安全与权限模型
- - OAuth 2.0:用户通过 AdWhiz 的 Web 界面使用 Google 和/或 Meta 进行身份验证。刷新令牌(Google)和长期访问令牌(Meta)在静态时加密(AES-256-GCM),且永远不会暴露给代理。
- API 密钥范围:每个 ADWHIZAPIKEY 绑定到单个用户的已关联账户。无法实现跨用户访问。
- 写入安全:默认情况下,所有 Google Ads 写入工具创建的实体状态为 已暂停。Meta 写入工具需要显式状态参数。
- 变更日志记录:每次变更都会记录在 getoperationlog 工具中,以实现完全可审计性。
- 默认只读:102 个工具中有 39 个严格为只读,无法修改您的账户。
- 需要确认:写入工具需要通过代理的标准权限流程,在获得用户确认后才能执行。
- 无任意代码执行:MCP 服务器是一个托管的 HTTP 服务。除了轻量级的 MCP 客户端包装器外,不会在用户机器上下载或执行任何代码。
Google Ads 工具(70 个)
账户(2 个工具)— 只读
| 工具 | 描述 |
|---|
| listaccounts | 列出所有可访问的 Google Ads 账户(自动展开 MCC 子账户) |
| getaccount_info |
获取账户详细信息(货币、时区、优化得分) |
读取(20 个工具)— 只读
| 工具 | 描述 |
|---|
| listcampaigns | 列出广告系列及其状态、类型、预算、出价策略 |
| getcampaign_performance |
广告系列指标:费用、点击次数、转化次数、点击率、每次操作费用、广告支出回报率 |
| list
adgroups | 列出广告组及其出价,可按广告系列筛选 |
| list_ads | 列出广告及其标题、描述、最终到达网址 |
| list_keywords | 关键词及其匹配类型、出价、质量得分 |
| get
searchterms | 搜索词报告(实际触发广告的查询) |
| list
negativekeywords | 广告系列、广告组或账户级别的否定关键词 |
| list_assets | 网站链接、标注、结构化摘要 |
| list
conversionactions | 转化操作及其状态、类型、类别 |
| list_budgets | 广告系列预算及其关联的广告系列 |
| list
biddingstrategies | 组合出价策略 |
| list
audiencesegments | 受众定位条件 |
| list
userlists | 用于定位的再营销/受众列表 |
| get
operationlog | 通过 AdWhiz 执行的近期变更操作 |
| list_recommendations | Google Ads 建议(添加关键词、提高出价、修复广告强度) |
| get
changehistory | 变更审计日志:谁在何时更改了什么 |
| list
geotargets | 广告系列的地理位置定位 |
| list
adschedules | 广告系列上的广告时间表(时段划分)条件 |
| list_labels | 用于组织广告系列、广告组、广告、关键词的标签 |
| generate
keywordideas | 关键词创意及其搜索量、竞争程度、出价范围 |
写入(45 个工具)— 需要用户确认
| 工具 | 描述 |
|---|
| createcampaign | 创建搜索、展示、效果最大化或视频广告系列(以已暂停状态开始) |
| updatecampaign |
更新广告系列名称 |
| set
campaignstatus | 暂停、启用或移除广告系列 |
| create
adgroup | 在广告系列中创建广告组 |
| update
adgroup | 更新广告组名称或每次点击费用出价 |
| set
adgroup_status | 暂停、启用或移除广告组 |
| create
responsivesearch_ad | 创建包含标题和描述的自适应搜索广告(以已暂停状态开始) |
| set
adstatus | 暂停、启用或移除广告 |
| add_keywords | 添加关键词及其匹配类型和出价 |
| update
keywordbid | 更改关键词的每次点击费用出价 |
| set
keywordstatus | 暂停、启用或移除关键词 |
| add
negativekeyword | 在广告系列或广告组级别添加否定关键词 |
| remove
negativekeyword | 移除否定关键词 |
| create
sharednegative_list | 创建共享否定关键词列表 |
| add
toshared_list | 向共享否定列表添加关键词 |
| attach
sharedlist | 将共享列表附加到广告系列 |
| create_sitelink | 创建网站链接资产 |
| create_callout | 创建标注资产 |
| create
structuredsnippet | 创建结构化摘要资产 |
| create
priceextension | 创建价格扩展资产 |
| link
assetto_campaign | 将资产链接到广告系列 |
| unlink
assetfrom_campaign | 取消资产与广告系列的链接 |
| create
conversionaction | 创建转化跟踪操作 |
| update
conversionaction | 更新转化操作名称或状态 |
| create_budget | 创建广告系列预算 |
| update_budget | 更新预算金额或名称 |
| create
biddingstrategy | 创建组合出价策略 |
| add
audienceto_campaign | 向广告系列添加受众定位 |
| update
responsivesearch_ad | 更新自适应搜索广告的标题、描述或网址 |
| link
assetto
adgroup | 将资产链接到广告组 |
| unlink
assetfrom
adgroup | 移除资产与广告组的链接 |
| upload
clickconversions | 上传离线点击转化(基于 gclid) |
| upload
customerlist | 将哈希处理的个人身份信息上传到客户匹配用户列表 |
| apply_recommendation | 应用 Google Ads 建议 |
| dismiss_recommendation | 忽略 Google Ads 建议 |
| add
geotargeting | 向广告系列添加地理位置定位 |
| remove
geotargeting | 从广告系列中移除地理位置定位 |
| add
adschedule | 向广告系列添加广告时间表(时段划分) |
| remove
adschedule | 从广告系列中移除广告时间表条件 |
| set
devicebid_adjustment | 设置设备出价调整(移动设备、桌面设备、平板电脑) |
| set
demographictargeting | 设置人口统计定位(年龄、性别、收入) |
| create_label | 创建用于组织实体的标签 |
| apply_label | 将标签应用于广告系列、广告组或广告 |
| remove_label | 从广告系列、广告组或广告中移除标签 |
| create
assetgroup | 为效果最大化广告系列创建资产组 |
审计(2 个工具)— 只读分析
| 工具 | 描述 |
|---|
| runminiaudit | 快速 3 指标审计:浪费的支出、最佳/最差每次操作费用、预计节省 |
| runfullaudit |
全面审计:广告系列、关键词、搜索词、问题、建议 |
查询(1 个工具)— 只读,有限制
| 工具 | 描述 |
|---|
| rungaqlquery | 针对您的账户执行只读 GAQL 查询(最多 1,000 行,仅 SELECT) |
Meta(Facebook)广告工具(32 个)
Meta 读取(15 个工具)— 只读
| 工具 | 描述 |
|---|
| metalistadaccounts | 列出所有已关联的 Meta 广告账户 |
| metalist_campaigns |
列出广告系列及其状态、目标、预算 |
| meta
getcampaign_insights | 每个广告系列的指标