AdAdvisor MCP Server icon

AdAdvisor MCP Server

WebsiteWebsite

Tags

registry.modelcontextprotocol.io

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)"
    }
  }
}
AdAdvisor MCP Server by ai.adadvisor | RouterMCP