
AdAdvisor MCP Server
Tags
Configuration
{
"mcpServers": {
"mcp-server": {
"url": "https://api.adadvisor.ai/mcp",
"type": "http"
}
},
"requiresAuth": true,
"requiresOAuth": false
}Available Tools (16)
list_ad_accounts
List all ad accounts the authenticated user has access to. Returns each account's name, numeric ID, platform type, business name, currency, data_synced status, and pixel summary.
Input Schema
{
"type": "object",
"properties": {}
}list_campaigns
List all campaigns in a Meta ad account with their configuration (objective, budget, bid strategy, buying type, spend cap, schedule).
Input Schema
{
"type": "object",
"required": [
"account_id"
],
"properties": {
"status": {
"type": "string",
"description": "Filter by effective status (e.g. ACTIVE, PAUSED). Defaults to all statuses."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
}
}
}list_adsets
List ad sets in a Meta ad account with their configuration (targeting, budget, optimization goal, bid strategy, promoted object).
Input Schema
{
"type": "object",
"required": [
"account_id"
],
"properties": {
"status": {
"type": "string",
"description": "Filter by effective status (e.g. ACTIVE, PAUSED). Defaults to all statuses."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"campaign_id": {
"type": "string",
"description": "Filter to ad sets in this campaign."
}
}
}list_ads
List ads in a Meta ad account with their configuration (creative details, tracking specs, parent campaign/ad set IDs).
Input Schema
{
"type": "object",
"required": [
"account_id"
],
"properties": {
"status": {
"type": "string",
"description": "Filter by effective status (e.g. ACTIVE, PAUSED). Defaults to all statuses."
},
"adset_id": {
"type": "string",
"description": "Filter to ads in this ad set."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"campaign_id": {
"type": "string",
"description": "Filter to ads in this campaign."
}
}
}get_performance
Retrieve aggregated performance metrics (spend, revenue, ROAS, CPA, etc.) for campaigns, ad sets, or ads in a Meta ad account over a date range.
Input Schema
{
"type": "object",
"required": [
"account_id",
"level"
],
"properties": {
"level": {
"enum": [
"campaign",
"adset",
"ad"
],
"type": "string",
"description": "Hierarchy level to retrieve"
},
"date_to": {
"type": "string",
"description": "End date (YYYY-MM-DD). Defaults to yesterday."
},
"adset_id": {
"type": "string",
"description": "Filter ads to this ad set. Only used when level is ad."
},
"date_from": {
"type": "string",
"description": "Start date (YYYY-MM-DD). Defaults to 45 days ago."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"campaign_id": {
"type": "string",
"description": "Filter ad sets or ads to this campaign. Ignored when level is campaign."
}
}
}get_timeseries
Get daily time-series metrics for a single campaign, ad set, or ad. Returns one row per day with spend, revenue, ROAS, and efficiency KPIs.
Input Schema
{
"type": "object",
"required": [
"account_id",
"entity_type",
"entity_id"
],
"properties": {
"end_date": {
"type": "string",
"description": "End date (YYYY-MM-DD). Defaults to yesterday."
},
"entity_id": {
"type": "string",
"description": "The specific campaign, adset, or ad ID. Must NOT be the account ID."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"start_date": {
"type": "string",
"description": "Start date (YYYY-MM-DD). Defaults to 45 days ago."
},
"entity_type": {
"enum": [
"campaign",
"adset",
"ad"
],
"type": "string",
"description": "Must be 'campaign', 'adset', or 'ad'. Account-level is NOT supported."
}
}
}search_targeting
Search Meta ad targeting options by keyword to discover valid IDs for interests, geolocation, behaviors, income, life events, industries, work positions, work employers, or locale.
Input Schema
{
"type": "object",
"required": [
"account_id",
"search_type",
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search keyword (e.g. 'golf', 'New York', 'accounting')"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"search_type": {
"enum": [
"interests",
"geolocation",
"behaviors",
"income",
"life_events",
"industries",
"work_positions",
"work_employers",
"locale"
],
"type": "string",
"description": "Type of targeting to search for"
}
}
}get_pixel_health
Get pixel health diagnostics for a Meta ad account — per-event counts, browser vs CAPI source split, automatic matching config, and host breakdown.
Input Schema
{
"type": "object",
"required": [
"account_id"
],
"properties": {
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
}
}
}change_entity_status
Pause or resume a Meta campaign, ad set, or ad. Idempotent: pausing an already-paused entity succeeds without error.
Input Schema
{
"type": "object",
"required": [
"account_id",
"entity_type",
"entity_id",
"action"
],
"properties": {
"action": {
"enum": [
"pause",
"resume"
],
"type": "string",
"description": "Action to take"
},
"entity_id": {
"type": "string",
"description": "The entity ID to pause or resume"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"entity_type": {
"enum": [
"campaign",
"adset",
"ad"
],
"type": "string",
"description": "Entity type"
}
}
}change_entity_budget
Update the daily or lifetime budget of a Meta campaign or ad set. Idempotent: setting the same budget again succeeds without error.
Input Schema
{
"type": "object",
"required": [
"account_id",
"entity_type",
"entity_id"
],
"properties": {
"entity_id": {
"type": "string",
"description": "The campaign or ad set ID"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"entity_type": {
"enum": [
"campaign",
"adset"
],
"type": "string",
"description": "Entity type (ads do not have budgets)"
},
"daily_budget": {
"type": "number",
"description": "New daily budget in account currency"
},
"lifetime_budget": {
"type": "number",
"description": "New lifetime budget in account currency"
}
}
}duplicate_campaign
Duplicate a Meta campaign. NOT idempotent — each call creates a new campaign. Supports full copy (with all ad sets and ads) or empty shell.
Input Schema
{
"type": "object",
"required": [
"account_id",
"campaign_id"
],
"properties": {
"reason": {
"enum": [
"COPY",
"SCALE",
"TEST",
"ISOLATE"
],
"type": "string",
"description": "Why the campaign is being duplicated. Appears in auto-generated name."
},
"deep_copy": {
"type": "boolean",
"description": "If true, duplicate all ad sets and ads. Default true."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"campaign_id": {
"type": "string",
"description": "The campaign ID to duplicate"
}
}
}duplicate_adset
Duplicate a Meta ad set into the same or a different campaign. NOT idempotent — each call creates a new ad set.
Input Schema
{
"type": "object",
"required": [
"account_id",
"adset_id"
],
"properties": {
"reason": {
"enum": [
"COPY",
"SCALE",
"TEST",
"ISOLATE"
],
"type": "string",
"description": "Why the ad set is being duplicated."
},
"adset_id": {
"type": "string",
"description": "The ad set ID to duplicate"
},
"deep_copy": {
"type": "boolean",
"description": "If true, duplicate all ads. Default true."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"target_campaign_id": {
"type": "string",
"description": "Campaign to place the copy in. Can be any existing campaign."
}
}
}duplicate_ad
Duplicate a Meta ad into the same or a different ad set. NOT idempotent — each call creates a new ad.
Input Schema
{
"type": "object",
"required": [
"account_id",
"ad_id"
],
"properties": {
"ad_id": {
"type": "string",
"description": "The ad ID to duplicate"
},
"reason": {
"enum": [
"COPY",
"SCALE",
"TEST",
"ISOLATE"
],
"type": "string",
"description": "Why the ad is being duplicated."
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
},
"target_adset_id": {
"type": "string",
"description": "Ad set to place the copy in. Can be any existing ad set."
}
}
}update_adset_targeting
Update the targeting spec of a Meta ad set. Accepts flat parameters (countries, interests, age, etc.) and assembles the targeting spec server-side. Validates via /reachestimate before applying.
Input Schema
{
"type": "object",
"required": [
"account_id",
"adset_id"
],
"properties": {
"adset_id": {
"type": "string",
"description": "The ad set ID to update"
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISO country codes, e.g. ['US', 'CA']"
},
"interests": {
"type": "array",
"description": "Interest targets from search_targeting"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
}
}
}create_campaign
Create one or more Meta ad campaigns. NOT idempotent — each call creates new campaigns. All campaigns are created as PAUSED. Names are auto-generated if omitted.
Input Schema
{
"type": "object",
"required": [
"account_id",
"campaigns"
],
"properties": {
"campaigns": {
"type": "array",
"description": "Array of campaign specs (objective, budget, bid_strategy, etc.)"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
}
}
}create_adset
Create one or more Meta ad sets. NOT idempotent — each call creates new ad sets. All ad sets are created as PAUSED. Names are auto-generated if omitted. Accepts any existing campaign_id.
Input Schema
{
"type": "object",
"required": [
"account_id",
"adsets"
],
"properties": {
"adsets": {
"type": "array",
"description": "Array of ad set specs (campaign_id, countries, interests, etc.)"
},
"account_id": {
"type": "string",
"description": "Meta ad account ID (numeric, from list_ad_accounts)"
}
}
}