ECC
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
npx ecc-install --profile fullThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
npx ecc-install --profile fullFair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
npx n8nAn open-source AI agent that brings the power of Gemini directly into your terminal.
npx @google/gemini-cliShows active maintenance signals
Carries strong trust indicators from repository metadata
1060 GitHub stars recorded
✨ Get started with Remote MCP here - no technical setup required! Just connect your Facebook Ads account and start asking AI to analyze your campaigns.
For advanced users who need to self-host, the package can be installed from source. Local installations require creating your own Meta Developer App. We recommend using Remote MCP for a simpler experience.
mcp_meta_ads_get_ad_accounts
access_token (optional): Meta API access token (will use cached token if not provided)user_id: Meta user ID or "me" for the current userlimit: Maximum number of accounts to return (default: 200)mcp_meta_ads_get_account_info
access_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)mcp_meta_ads_get_account_pages
access_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX) or "me" for the current user's pagesmcp_meta_ads_get_campaigns
access_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of campaigns to return (default: 10)status_filter: Filter by status (empty for all, or 'ACTIVE', 'PAUSED', etc.)mcp_meta_ads_get_campaign_details
access_token (optional): Meta API access token (will use cached token if not provided)campaign_id: Meta Ads campaign IDmcp_meta_ads_create_campaign
Create a new campaign in a Meta Ads account
Inputs:
access_token (optional): Meta API access token (will use cached token if not provided)
account_id: Meta Ads account ID (format: act_XXXXXXXXX)
name: Campaign name
objective: Campaign objective (ODAX, outcome-based). Must be one of:
OUTCOME_AWARENESSOUTCOME_TRAFFICOUTCOME_ENGAGEMENTOUTCOME_LEADSOUTCOME_SALESOUTCOME_APP_PROMOTIONNote: Legacy objectives such as BRAND_AWARENESS, LINK_CLICKS, CONVERSIONS, APP_INSTALLS, etc. are no longer valid for new campaigns and will cause a 400 error. Use the outcome-based values above. Common mappings:
BRAND_AWARENESS → OUTCOME_AWARENESSREACH → OUTCOME_AWARENESSLINK_CLICKS, TRAFFIC → OUTCOME_TRAFFICPOST_ENGAGEMENT, PAGE_LIKES, EVENT_RESPONSES, VIDEO_VIEWS → OUTCOME_ENGAGEMENTLEAD_GENERATION → OUTCOME_LEADSCONVERSIONS, CATALOG_SALES, MESSAGES (sales-focused flows) → OUTCOME_SALESAPP_INSTALLS → OUTCOME_APP_PROMOTIONstatus: Initial campaign status (default: PAUSED)
special_ad_categories: List of special ad categories if applicable
daily_budget: Daily budget in account currency (in cents)
lifetime_budget: Lifetime budget in account currency (in cents)
bid_strategy: Bid strategy. Must be one of: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS.
Returns: Confirmation with new campaign details
Example:
{
"name": "2025 - Bedroom Furniture - Awareness",
"account_id": "act_123456789012345",
"objective": "OUTCOME_AWARENESS",
"special_ad_categories": [],
"status": "PAUSED",
"buying_type": "AUCTION",
"bid_strategy": "LOWEST_COST_WITHOUT_CAP",
"daily_budget": 10000
}
mcp_meta_ads_get_adsets
access_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of ad sets to return (default: 10)campaign_id: Optional campaign ID to filter bymcp_meta_ads_get_adset_details
access_token (optional): Meta API access token (will use cached token if not provided)adset_id: Meta Ads ad set IDmcp_meta_ads_create_adset
account_id: Meta Ads account ID (format: act_XXXXXXXXX)campaign_id: Meta Ads campaign ID this ad set belongs toname: Ad set namestatus: Initial ad set status (default: PAUSED)daily_budget: Daily budget in account currency (in cents) as a stringlifetime_budget: Lifetime budget in account currency (in cents) as a stringtargeting: Targeting specifications (e.g., age, location, interests)optimization_goal: Conversion optimization goal (e.g., 'LINK_CLICKS')billing_event: How you're charged (e.g., 'IMPRESSIONS')bid_amount: Bid amount in cents. Required for LOWEST_COST_WITH_BID_CAP, COST_CAP, TARGET_COST.bid_strategy: Bid strategy (e.g., 'LOWEST_COST_WITHOUT_CAP', 'LOWEST_COST_WITH_MIN_ROAS')bid_constraints: Bid constraints dict. Required for LOWEST_COST_WITH_MIN_ROAS (e.g., {"roas_average_floor": 20000})start_time, end_time: Optional start/end times (ISO 8601)access_token (optional): Meta API access tokenmcp_meta_ads_get_ads
access_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of ads to return (default: 10)campaign_id: Optional campaign ID to filter byadset_id: Optional ad set ID to filter bymcp_meta_ads_create_ad
account_id: Meta Ads account ID (format: act_XXXXXXXXX)name: Ad nameadset_id: Ad set ID where this ad will be placedcreative_id: ID of an existing creative to usestatus: Initial ad status (default: PAUSED)bid_amount: Optional bid amount (in cents)tracking_specs: Optional tracking specificationsaccess_token (optional): Meta API access tokenmcp_meta_ads_get_ad_details
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_get_ad_creatives
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_create_ad_creative
account_id: Meta Ads account ID (format: act_XXXXXXXXX)name: Creative nameimage_hash: Hash of the uploaded imagepage_id: Facebook Page ID for the adlink_url: Destination URLmessage: Ad copy/textheadline: Single headline for simple ads (cannot be used with headlines)headlines: List of headlines for dynamic creative testing (cannot be used with headline)description: Single description for simple ads (cannot be used with descriptions)descriptions: List of descriptions for dynamic creative testing (cannot be used with description)dynamic_creative_spec: Dynamic creative optimization settingscall_to_action_type: CTA button type (e.g., 'LEARN_MORE')instagram_actor_id: Optional Instagram account IDaccess_token (optional): Meta API access tokenmcp_meta_ads_update_ad_creative
creative_id: Meta Ads creative ID to updatename: New creative namemessage: New ad copy/textheadline: Single headline for simple ads (cannot be used with headlines)headlines: New list of headlines for dynamic creative testing (cannot be used with headline)description: Single description for simple ads (cannot be used with descriptions)descriptions: New list of descriptions for dynamic creative testing (cannot be used with description)dynamic_creative_spec: New dynamic creative optimization settingscall_to_action_type: New call to action button typeaccess_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_upload_ad_image
account_id: Meta Ads account ID (format: act_XXXXXXXXX)image_path: Path to the image file to uploadname: Optional name for the imageaccess_token (optional): Meta API access tokenmcp_meta_ads_get_ad_image
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_update_ad
ad_id: Meta Ads ad IDstatus: Update ad status (ACTIVE, PAUSED, etc.)bid_amount: Bid amount in account currency (in cents for USD)access_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_update_adset
adset_id: Meta Ads ad set IDfrequency_control_specs: List of frequency control specificationsbid_strategy: Bid strategy (e.g., 'LOWEST_COST_WITH_BID_CAP', 'LOWEST_COST_WITH_MIN_ROAS')bid_amount: Bid amount in cents. Required for LOWEST_COST_WITH_BID_CAP, COST_CAP, TARGET_COST.bid_constraints: Bid constraints dict. Required for LOWEST_COST_WITH_MIN_ROAS (e.g., {"roas_average_floor": 20000})status: Update ad set status (ACTIVE, PAUSED, etc.)targeting: Targeting specifications including targeting_automationaccess_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_get_insights
access_token (optional): Meta API access token (will use cached token if not provided)object_id: ID of the campaign, ad set, ad or accounttime_range: Time range for insights (default: maximum)breakdown: Optional breakdown dimension (e.g., age, gender, country)level: Level of aggregation (ad, adset, campaign, account)action_attribution_windows (optional): List of attribution windows for conversion data (e.g., ["1d_click", "1d_view", "7d_click", "7d_view"]). When specified, actions and cost_per_action_type include additional fields for each window. The 'value' field always shows 7d_click attribution.mcp_meta_ads_get_login_link
access_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_create_budget_schedule
campaign_id: Meta Ads campaign IDbudget_value: Amount of budget increasebudget_value_type: Type of budget value ("ABSOLUTE" or "MULTIPLIER")time_start: Unix timestamp for when the high demand period should starttime_end: Unix timestamp for when the high demand period should endaccess_token (optional): Meta API access tokenmcp_meta_ads_search_interests
access_token (optional): Meta API access token (will use cached token if not provided)query: Search term for interests (e.g., "baseball", "cooking", "travel")limit: Maximum number of results to return (default: 25)mcp_meta_ads_get_interest_suggestions
access_token (optional): Meta API access token (will use cached token if not provided)interest_list: List of interest names to get suggestions for (e.g., ["Basketball", "Soccer"])limit: Maximum number of suggestions to return (default: 25)mcp_meta_ads_validate_interests
access_token (optional): Meta API access token (will use cached token if not provided)interest_list: List of interest names to validate (e.g., ["Japan", "Basketball"])interest_fbid_list: List of interest IDs to validate (e.g., ["6003700426513"])mcp_meta_ads_search_behaviors
access_token (optional): Meta API access token (will use cached token if not provided)limit: Maximum number of results to return (default: 50)mcp_meta_ads_search_demographics
access_token (optional): Meta API access token (will use cached token if not provided)demographic_class: Type of demographics ('demographics', 'life_events', 'industries', 'income', 'family_statuses', 'user_device', 'user_os')limit: Maximum number of results to return (default: 50)mcp_meta_ads_search_geo_locations
access_token (optional): Meta API access token (will use cached token if not provided)query: Search term for locations (e.g., "New York", "California", "Japan")location_types: Types of locations to search (['country', 'region', 'city', 'zip', 'geo_market', 'electoral_district'])limit: Maximum number of results to return (default: 25)mcp_meta_ads_search (Enhanced)
access_token (optional): Meta API access token (will use cached token if not provided)query: Search query string (e.g., "Injury Payouts pages", "active campaigns")