{"name":"io.github.mcp-dir/meta_ads-mcp","slug":"mcp-dir-meta-ads-mcp","title":"Meta Ads (Facebook & Instagram)","description":"Read and manage Meta Ads campaigns, ad sets, ads, audiences, pages and Business Manager. You provide","url":"https://mcp.market/server/mcp-dir-meta-ads-mcp","rating":null,"grade":"B","score":79,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":15,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-30T19:45:40.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-02T02:35:30.693Z","last_ok_at":"2026-11-02T02:35:30.693Z","latency_ms":76},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/mcp-dir/meta_ads-mcp","website":null,"version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://api.mcp.ai/p_meta_ads"}],"packages":[],"tools":[{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: \"<jwt>\" } after the user pastes, or with no args to get the link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\", \"consulta um CPF\", \"is there a tool for Y\". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"default":"search","type":"string","enum":["search","describe","install","uninstall","subscribe","cancel","resume","report_bug","request_mcp","list_tools","invoke","search_prompts","get_prompt","publish_prompt"]},"query":{"default":"","type":"string"},"mcp_id":{"default":"","type":"string"},"limit":{"default":10,"type":"number"},"tier_slug":{"default":"","type":"string"},"immediate":{"default":false,"type":"boolean"},"cancel_reason":{"type":"string","enum":["too_expensive","missing_features","switched_service","unused","customer_service","too_complex","low_quality","other"]},"cancel_comment":{"default":"","type":"string"},"message":{"default":"","type":"string"},"report_context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"},"request_name":{"default":"","type":"string"},"request_details":{"default":"","type":"string"},"tool_id":{"default":"","type":"string"},"arguments":{"default":"{}","type":"string"},"prompt_slug":{"default":"","type":"string"},"prompt_vars":{"default":"{}","type":"string"},"prompt_category":{"default":"","type":"string"},"prompt_tool":{"default":"","type":"string"},"prompt_title":{"default":"","type":"string"},"prompt_description":{"default":"","type":"string"},"prompt_body":{"default":"","type":"string"},"prompt_targets":{"default":[],"type":"array","items":{"type":"string","enum":["claude","chatgpt","cursor","lovable"]}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_ads","description":"List ads with creatives (image, video, copy) and performance insights. Includes spend, revenue, ROAS, actions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"include_paused":{"default":false,"type":"boolean"},"since":{"type":"string"},"until":{"type":"string"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_adset_delete","description":"Permanently delete a Meta Ads ad set. Irreversible.\n\nBulk support: accepts adset_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"adset_id":{"type":"string"},"auth_account":{"type":"string"},"adset_ids":{"type":"array","items":{"type":"string"}}},"required":["adset_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_adset_detail","description":"Get detailed ad set info: targeting, budget, schedule, billing, optimization goal, delivery status. Fills the gap between campaigns and ads.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"include_paused":{"default":false,"type":"boolean"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_adset_write_create","description":"Create or update Meta Ads ad sets.\nActions:\n  create — new ad set linked to a campaign (targeting, budget, schedule)\n  update — change fields on existing ad set\nTargeting is a JSON object: { \"geo_locations\": { \"countries\": [\"BR\"] }, \"age_min\": 18, \"age_max\": 65, \"genders\": [1, 2] }\nBudgets in cents.\nBUDGET (most common create failure): the ad set REQUIRES daily_budget or lifetime_budget, UNLESS the parent campaign already carries the budget (campaign budget optimization) — in which case the ad set must NOT send one. lifetime_budget also requires end_time.\noptimization_goal must match the campaign objective: OUTCOME_TRAFFIC → LINK_CLICKS / LANDING_PAGE_VIEWS / IMPRESSIONS; OUTCOME_AWARENESS → REACH / IMPRESSIONS; OUTCOME_ENGAGEMENT → POST_ENGAGEMENT / THRUPLAY / PAGE_LIKES / CONVERSATIONS; OUTCOME_LEADS → LEAD_GENERATION / QUALITY_LEAD / OFFSITE_CONVERSIONS; OUTCOME_SALES → OFFSITE_CONVERSIONS / VALUE; OUTCOME_APP_PROMOTION → APP_INSTALLS.\nOFFSITE_CONVERSIONS/VALUE need promoted_object with the pixel: {\"pixel_id\":\"123\",\"custom_event_type\":\"PURCHASE\"}. LEAD_GENERATION needs {\"page_id\":\"123\"}.\ndestination_type is only for non-website destinations (MESSENGER, WHATSAPP, PHONE_CALL); omit it for regular website traffic.\nFor destructive delete use meta_ads_adset_delete.\n\n[Flattened action: create]\n\nBulk support: accepts adset_ids, campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"adset_id":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"billing_event":{"type":"string","enum":["IMPRESSIONS","LINK_CLICKS","POST_ENGAGEMENT","THRUPLAY","PAGE_LIKES","APP_INSTALLS"]},"optimization_goal":{"type":"string","enum":["LINK_CLICKS","LANDING_PAGE_VIEWS","IMPRESSIONS","REACH","POST_ENGAGEMENT","THRUPLAY","PAGE_LIKES","CONVERSATIONS","LEAD_GENERATION","QUALITY_LEAD","OFFSITE_CONVERSIONS","VALUE","APP_INSTALLS"]},"targeting":{"type":"string"},"destination_type":{"type":"string","enum":["MESSENGER","WHATSAPP","PHONE_CALL","APP","INSTAGRAM_DIRECT","ON_AD","ON_POST","ON_VIDEO","ON_PAGE","ON_EVENT"]},"promoted_object":{"type":"string"},"bid_amount":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"start_time":{"type":"string"},"end_time":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"auth_account":{"type":"string"},"adset_ids":{"type":"array","items":{"type":"string"}},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_adset_write_update","description":"Create or update Meta Ads ad sets.\nActions:\n  create — new ad set linked to a campaign (targeting, budget, schedule)\n  update — change fields on existing ad set\nTargeting is a JSON object: { \"geo_locations\": { \"countries\": [\"BR\"] }, \"age_min\": 18, \"age_max\": 65, \"genders\": [1, 2] }\nBudgets in cents.\nBUDGET (most common create failure): the ad set REQUIRES daily_budget or lifetime_budget, UNLESS the parent campaign already carries the budget (campaign budget optimization) — in which case the ad set must NOT send one. lifetime_budget also requires end_time.\noptimization_goal must match the campaign objective: OUTCOME_TRAFFIC → LINK_CLICKS / LANDING_PAGE_VIEWS / IMPRESSIONS; OUTCOME_AWARENESS → REACH / IMPRESSIONS; OUTCOME_ENGAGEMENT → POST_ENGAGEMENT / THRUPLAY / PAGE_LIKES / CONVERSATIONS; OUTCOME_LEADS → LEAD_GENERATION / QUALITY_LEAD / OFFSITE_CONVERSIONS; OUTCOME_SALES → OFFSITE_CONVERSIONS / VALUE; OUTCOME_APP_PROMOTION → APP_INSTALLS.\nOFFSITE_CONVERSIONS/VALUE need promoted_object with the pixel: {\"pixel_id\":\"123\",\"custom_event_type\":\"PURCHASE\"}. LEAD_GENERATION needs {\"page_id\":\"123\"}.\ndestination_type is only for non-website destinations (MESSENGER, WHATSAPP, PHONE_CALL); omit it for regular website traffic.\nFor destructive delete use meta_ads_adset_delete.\n\n[Flattened action: update]\n\nBulk support: accepts adset_ids, campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"adset_id":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"billing_event":{"type":"string","enum":["IMPRESSIONS","LINK_CLICKS","POST_ENGAGEMENT","THRUPLAY","PAGE_LIKES","APP_INSTALLS"]},"optimization_goal":{"type":"string","enum":["LINK_CLICKS","LANDING_PAGE_VIEWS","IMPRESSIONS","REACH","POST_ENGAGEMENT","THRUPLAY","PAGE_LIKES","CONVERSATIONS","LEAD_GENERATION","QUALITY_LEAD","OFFSITE_CONVERSIONS","VALUE","APP_INSTALLS"]},"targeting":{"type":"string"},"destination_type":{"type":"string","enum":["MESSENGER","WHATSAPP","PHONE_CALL","APP","INSTAGRAM_DIRECT","ON_AD","ON_POST","ON_VIDEO","ON_PAGE","ON_EVENT"]},"promoted_object":{"type":"string"},"bid_amount":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"start_time":{"type":"string"},"end_time":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"auth_account":{"type":"string"},"adset_ids":{"type":"array","items":{"type":"string"}},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_audience","description":"List Custom Audiences in the ad account.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_audience_delete","description":"Permanently delete a Custom Audience. Irreversible.\n\nBulk support: accepts audience_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"audience_id":{"type":"string"},"auth_account":{"type":"string"},"audience_ids":{"type":"array","items":{"type":"string"}}},"required":["audience_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_audience_write_add_users","description":"Manage Custom Audiences for targeting.\nActions:\n  create     — create a new custom audience\n  add_users  — upload hashed user data (email, phone, first/last name). PII is SHA-256 hashed before upload.\nUsers format: array of { email, phone?, fn?, ln? }. Data is normalized and hashed automatically.\nFor destructive delete use meta_ads_audience_delete.\n\n[Flattened action: add_users]\n\nBulk support: accepts audience_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"audience_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"users":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"phone":{"type":"string"},"fn":{"type":"string"},"ln":{"type":"string"}}}},"auth_account":{"type":"string"},"audience_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_audience_write_create","description":"Manage Custom Audiences for targeting.\nActions:\n  create     — create a new custom audience\n  add_users  — upload hashed user data (email, phone, first/last name). PII is SHA-256 hashed before upload.\nUsers format: array of { email, phone?, fn?, ln? }. Data is normalized and hashed automatically.\nFor destructive delete use meta_ads_audience_delete.\n\n[Flattened action: create]\n\nBulk support: accepts audience_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"audience_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"users":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"phone":{"type":"string"},"fn":{"type":"string"},"ln":{"type":"string"}}}},"auth_account":{"type":"string"},"audience_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_business_accounts","description":"Read Facebook Business Manager data. Actions:\n  list — list Business Managers\n  accounts — ad accounts owned by a BM\n  pages — pages owned by a BM\n  users — business users and system users\n  pixels — pixels owned by a BM\n\n[Flattened action: accounts]\n\nBulk support: accepts business_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_id":{"type":"string"},"auth_account":{"type":"string"},"business_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_business_list","description":"Read Facebook Business Manager data. Actions:\n  list — list Business Managers\n  accounts — ad accounts owned by a BM\n  pages — pages owned by a BM\n  users — business users and system users\n  pixels — pixels owned by a BM\n\n[Flattened action: list]\n\nBulk support: accepts business_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_id":{"type":"string"},"auth_account":{"type":"string"},"business_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_business_pages","description":"Read Facebook Business Manager data. Actions:\n  list — list Business Managers\n  accounts — ad accounts owned by a BM\n  pages — pages owned by a BM\n  users — business users and system users\n  pixels — pixels owned by a BM\n\n[Flattened action: pages]\n\nBulk support: accepts business_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_id":{"type":"string"},"auth_account":{"type":"string"},"business_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_business_pixels","description":"Read Facebook Business Manager data. Actions:\n  list — list Business Managers\n  accounts — ad accounts owned by a BM\n  pages — pages owned by a BM\n  users — business users and system users\n  pixels — pixels owned by a BM\n\n[Flattened action: pixels]\n\nBulk support: accepts business_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_id":{"type":"string"},"auth_account":{"type":"string"},"business_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_business_users","description":"Read Facebook Business Manager data. Actions:\n  list — list Business Managers\n  accounts — ad accounts owned by a BM\n  pages — pages owned by a BM\n  users — business users and system users\n  pixels — pixels owned by a BM\n\n[Flattened action: users]\n\nBulk support: accepts business_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"business_id":{"type":"string"},"auth_account":{"type":"string"},"business_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaign_delete","description":"Permanently delete a Meta Ads campaign. Irreversible.\n\nBulk support: accepts campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"campaign_id":{"type":"string"},"auth_account":{"type":"string"},"campaign_ids":{"type":"array","items":{"type":"string"}}},"required":["campaign_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaign_write_activate","description":"Create, update, pause or activate Meta Ads campaigns.\nActions:\n  create  — new campaign (name, objective, budget required)\n  update  — change name, budget, status\n  pause   — shortcut to pause a campaign\n  activate — shortcut to activate a campaign\nObjectives: OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_APP_PROMOTION.\nBudgets are in cents (e.g. 5000 = $50.00). A budget HERE means campaign budget optimization: the ad sets under it must then NOT carry their own budget. Leave the campaign budget empty to budget per ad set instead.\nFor destructive delete use meta_ads_campaign_delete.\n\n[Flattened action: activate]\n\nBulk support: accepts campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"objective":{"type":"string","enum":["OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_SALES","OUTCOME_AWARENESS","OUTCOME_APP_PROMOTION"]},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"special_ad_categories":{"type":"array","items":{"type":"string"}},"auth_account":{"type":"string"},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaign_write_create","description":"Create, update, pause or activate Meta Ads campaigns.\nActions:\n  create  — new campaign (name, objective, budget required)\n  update  — change name, budget, status\n  pause   — shortcut to pause a campaign\n  activate — shortcut to activate a campaign\nObjectives: OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_APP_PROMOTION.\nBudgets are in cents (e.g. 5000 = $50.00). A budget HERE means campaign budget optimization: the ad sets under it must then NOT carry their own budget. Leave the campaign budget empty to budget per ad set instead.\nFor destructive delete use meta_ads_campaign_delete.\n\n[Flattened action: create]\n\nBulk support: accepts campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"objective":{"type":"string","enum":["OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_SALES","OUTCOME_AWARENESS","OUTCOME_APP_PROMOTION"]},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"special_ad_categories":{"type":"array","items":{"type":"string"}},"auth_account":{"type":"string"},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaign_write_pause","description":"Create, update, pause or activate Meta Ads campaigns.\nActions:\n  create  — new campaign (name, objective, budget required)\n  update  — change name, budget, status\n  pause   — shortcut to pause a campaign\n  activate — shortcut to activate a campaign\nObjectives: OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_APP_PROMOTION.\nBudgets are in cents (e.g. 5000 = $50.00). A budget HERE means campaign budget optimization: the ad sets under it must then NOT carry their own budget. Leave the campaign budget empty to budget per ad set instead.\nFor destructive delete use meta_ads_campaign_delete.\n\n[Flattened action: pause]\n\nBulk support: accepts campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"objective":{"type":"string","enum":["OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_SALES","OUTCOME_AWARENESS","OUTCOME_APP_PROMOTION"]},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"special_ad_categories":{"type":"array","items":{"type":"string"}},"auth_account":{"type":"string"},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaign_write_update","description":"Create, update, pause or activate Meta Ads campaigns.\nActions:\n  create  — new campaign (name, objective, budget required)\n  update  — change name, budget, status\n  pause   — shortcut to pause a campaign\n  activate — shortcut to activate a campaign\nObjectives: OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_APP_PROMOTION.\nBudgets are in cents (e.g. 5000 = $50.00). A budget HERE means campaign budget optimization: the ad sets under it must then NOT carry their own budget. Leave the campaign budget empty to budget per ad set instead.\nFor destructive delete use meta_ads_campaign_delete.\n\n[Flattened action: update]\n\nBulk support: accepts campaign_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"campaign_id":{"type":"string"},"name":{"type":"string"},"objective":{"type":"string","enum":["OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_SALES","OUTCOME_AWARENESS","OUTCOME_APP_PROMOTION"]},"daily_budget":{"type":"number"},"lifetime_budget":{"type":"number"},"bid_strategy":{"type":"string","enum":["LOWEST_COST_WITHOUT_CAP","LOWEST_COST_WITH_BID_CAP","COST_CAP","LOWEST_COST_WITH_MIN_ROAS"]},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"special_ad_categories":{"type":"array","items":{"type":"string"}},"auth_account":{"type":"string"},"campaign_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_campaigns","description":"List Meta Ads campaigns. Returns: id, name, status, objective, budget, dates.\nSet include_paused=true to also show paused campaigns.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"include_paused":{"default":false,"type":"boolean"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_creative_delete","description":"Permanently delete a Meta Ads ad. Irreversible.\n\nBulk support: accepts ad_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"ad_id":{"type":"string"},"auth_account":{"type":"string"},"ad_ids":{"type":"array","items":{"type":"string"}}},"required":["ad_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_creative_write_create_ad","description":"Create ad creatives and ads (final step to launch).\nActions:\n  create_creative — create ad creative with image/video + copy (requires page_id)\n  create_ad       — create ad linking creative to ad set\n  update_ad       — update ad fields (name, status, creative)\nFor create_creative: provide image_hash (from upload_image) OR video_id (from upload_video) + page_id + message.\ncall_to_action_type: LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, GET_QUOTE, CONTACT_US, SUBSCRIBE, BOOK_NOW, etc.\nFor destructive delete use meta_ads_creative_delete.\n\n[Flattened action: create_ad]\n\nBulk support: accepts page_ids, video_ids, adset_ids, creative_ids, ad_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"name":{"type":"string"},"page_id":{"type":"string"},"message":{"type":"string"},"link":{"type":"string"},"image_hash":{"type":"string"},"video_id":{"type":"string"},"call_to_action_type":{"type":"string"},"adset_id":{"type":"string"},"creative_id":{"type":"string"},"ad_id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"video_ids":{"type":"array","items":{"type":"string"}},"adset_ids":{"type":"array","items":{"type":"string"}},"creative_ids":{"type":"array","items":{"type":"string"}},"ad_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_creative_write_create_creative","description":"Create ad creatives and ads (final step to launch).\nActions:\n  create_creative — create ad creative with image/video + copy (requires page_id)\n  create_ad       — create ad linking creative to ad set\n  update_ad       — update ad fields (name, status, creative)\nFor create_creative: provide image_hash (from upload_image) OR video_id (from upload_video) + page_id + message.\ncall_to_action_type: LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, GET_QUOTE, CONTACT_US, SUBSCRIBE, BOOK_NOW, etc.\nFor destructive delete use meta_ads_creative_delete.\n\n[Flattened action: create_creative]\n\nBulk support: accepts page_ids, video_ids, adset_ids, creative_ids, ad_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"name":{"type":"string"},"page_id":{"type":"string"},"message":{"type":"string"},"link":{"type":"string"},"image_hash":{"type":"string"},"video_id":{"type":"string"},"call_to_action_type":{"type":"string"},"adset_id":{"type":"string"},"creative_id":{"type":"string"},"ad_id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"video_ids":{"type":"array","items":{"type":"string"}},"adset_ids":{"type":"array","items":{"type":"string"}},"creative_ids":{"type":"array","items":{"type":"string"}},"ad_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_creative_write_update_ad","description":"Create ad creatives and ads (final step to launch).\nActions:\n  create_creative — create ad creative with image/video + copy (requires page_id)\n  create_ad       — create ad linking creative to ad set\n  update_ad       — update ad fields (name, status, creative)\nFor create_creative: provide image_hash (from upload_image) OR video_id (from upload_video) + page_id + message.\ncall_to_action_type: LEARN_MORE, SHOP_NOW, SIGN_UP, DOWNLOAD, GET_QUOTE, CONTACT_US, SUBSCRIBE, BOOK_NOW, etc.\nFor destructive delete use meta_ads_creative_delete.\n\n[Flattened action: update_ad]\n\nBulk support: accepts page_ids, video_ids, adset_ids, creative_ids, ad_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"name":{"type":"string"},"page_id":{"type":"string"},"message":{"type":"string"},"link":{"type":"string"},"image_hash":{"type":"string"},"video_id":{"type":"string"},"call_to_action_type":{"type":"string"},"adset_id":{"type":"string"},"creative_id":{"type":"string"},"ad_id":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"video_ids":{"type":"array","items":{"type":"string"}},"adset_ids":{"type":"array","items":{"type":"string"}},"creative_ids":{"type":"array","items":{"type":"string"}},"ad_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_list_accounts","description":"List Meta (Facebook) connections AND the ad accounts inside each — returns `connections[]` (OAuth logins) and `ad_accounts[]` with id (act_XXX), name, currency, timezone, status. Use the ad_account_id in `account` on the other tools.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_media_list_images","description":"List uploaded media in the ad account.\nActions: list_images, list_videos.\n\n[Flattened action: list_images]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_media_list_videos","description":"List uploaded media in the ad account.\nActions: list_images, list_videos.\n\n[Flattened action: list_videos]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_media_write_get_upload_command","description":"Upload images and videos to Meta Ads account.\nActions:\n  upload_image        — upload an image. Returns the image hash you need for create_creative.\n  upload_video        — upload video from URL (Meta fetches it). Returns video_id.\n  get_upload_command  — get a curl command for uploading large local video files (keeps file out of AI context).\nupload_image accepts the file in four ways (use exactly one): image_url/file_url (public URL),\nupload_id (uploaded via the command this tool hands you), file_base64, or upload_code.\nCall upload_image with NO file to get a ready-made upload command for a file on the user's machine.\nFacebook CDN links (*.fbcdn.net) are signed, expiring and pinned to the browser that opened them —\nthey do NOT work as image_url from the server; upload the file instead.\nFor listing already-uploaded media use meta_ads_media.\n\n[Flattened action: get_upload_command]\n\nBulk support: accepts upload_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"image_url":{"type":"string"},"file_url":{"type":"string"},"upload_id":{"type":"string"},"file_base64":{"type":"string"},"upload_code":{"type":"string"},"file_name":{"type":"string"},"video_url":{"type":"string"},"title":{"type":"string"},"file_path":{"type":"string"},"auth_account":{"type":"string"},"upload_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_media_write_upload_image","description":"Upload images and videos to Meta Ads account.\nActions:\n  upload_image        — upload an image. Returns the image hash you need for create_creative.\n  upload_video        — upload video from URL (Meta fetches it). Returns video_id.\n  get_upload_command  — get a curl command for uploading large local video files (keeps file out of AI context).\nupload_image accepts the file in four ways (use exactly one): image_url/file_url (public URL),\nupload_id (uploaded via the command this tool hands you), file_base64, or upload_code.\nCall upload_image with NO file to get a ready-made upload command for a file on the user's machine.\nFacebook CDN links (*.fbcdn.net) are signed, expiring and pinned to the browser that opened them —\nthey do NOT work as image_url from the server; upload the file instead.\nFor listing already-uploaded media use meta_ads_media.\n\n[Flattened action: upload_image]\n\nBulk support: accepts upload_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"image_url":{"type":"string"},"file_url":{"type":"string"},"upload_id":{"type":"string"},"file_base64":{"type":"string"},"upload_code":{"type":"string"},"file_name":{"type":"string"},"video_url":{"type":"string"},"title":{"type":"string"},"file_path":{"type":"string"},"auth_account":{"type":"string"},"upload_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_media_write_upload_video","description":"Upload images and videos to Meta Ads account.\nActions:\n  upload_image        — upload an image. Returns the image hash you need for create_creative.\n  upload_video        — upload video from URL (Meta fetches it). Returns video_id.\n  get_upload_command  — get a curl command for uploading large local video files (keeps file out of AI context).\nupload_image accepts the file in four ways (use exactly one): image_url/file_url (public URL),\nupload_id (uploaded via the command this tool hands you), file_base64, or upload_code.\nCall upload_image with NO file to get a ready-made upload command for a file on the user's machine.\nFacebook CDN links (*.fbcdn.net) are signed, expiring and pinned to the browser that opened them —\nthey do NOT work as image_url from the server; upload the file instead.\nFor listing already-uploaded media use meta_ads_media.\n\n[Flattened action: upload_video]\n\nBulk support: accepts upload_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"image_url":{"type":"string"},"file_url":{"type":"string"},"upload_id":{"type":"string"},"file_base64":{"type":"string"},"upload_code":{"type":"string"},"file_name":{"type":"string"},"video_url":{"type":"string"},"title":{"type":"string"},"file_path":{"type":"string"},"auth_account":{"type":"string"},"upload_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_pages_insights","description":"Read Facebook Pages data. Actions:\n  list — all pages the user manages (name, fan_count, followers)\n  insights — page engagement metrics (follows, views) for a specific page\n  posts — recent posts with likes, comments, shares\n  post_insights — detailed insights for a specific post\n\n[Flattened action: insights]\n\nBulk support: accepts page_ids, post_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"type":"string"},"post_id":{"type":"string"},"period":{"default":"day","type":"string","enum":["day","week","days_28"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"post_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_pages_list","description":"Read Facebook Pages data. Actions:\n  list — all pages the user manages (name, fan_count, followers)\n  insights — page engagement metrics (follows, views) for a specific page\n  posts — recent posts with likes, comments, shares\n  post_insights — detailed insights for a specific post\n\n[Flattened action: list]\n\nBulk support: accepts page_ids, post_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"type":"string"},"post_id":{"type":"string"},"period":{"default":"day","type":"string","enum":["day","week","days_28"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"post_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_pages_post_insights","description":"Read Facebook Pages data. Actions:\n  list — all pages the user manages (name, fan_count, followers)\n  insights — page engagement metrics (follows, views) for a specific page\n  posts — recent posts with likes, comments, shares\n  post_insights — detailed insights for a specific post\n\n[Flattened action: post_insights]\n\nBulk support: accepts page_ids, post_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"type":"string"},"post_id":{"type":"string"},"period":{"default":"day","type":"string","enum":["day","week","days_28"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"post_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_pages_posts","description":"Read Facebook Pages data. Actions:\n  list — all pages the user manages (name, fan_count, followers)\n  insights — page engagement metrics (follows, views) for a specific page\n  posts — recent posts with likes, comments, shares\n  post_insights — detailed insights for a specific post\n\n[Flattened action: posts]\n\nBulk support: accepts page_ids, post_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page_id":{"type":"string"},"post_id":{"type":"string"},"period":{"default":"day","type":"string","enum":["day","week","days_28"]},"auth_account":{"type":"string"},"page_ids":{"type":"array","items":{"type":"string"}},"post_ids":{"type":"array","items":{"type":"string"}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_realtime","description":"Hourly realtime dashboard for today. Shows per-ad breakdown with hourly stats, campaign/adset/creative details, plus _summary.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_roas","description":"ROAS (Return on Ad Spend) for a date range using Meta's /insights endpoint — includes spend from ads in ANY status (ACTIVE/PAUSED/DISABLED/ARCHIVED). Defaults to current month, level=ad. For account totals use level=account; for per-campaign view use level=campaign. Returns per-row spend, revenue, ROAS, plus _summary.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"level":{"default":"ad","type":"string","enum":["ad","adset","campaign","account"]},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_status","description":"Validate Facebook token, check expiry date, list connected ad accounts and scopes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"meta_ads_today","description":"Today's ad performance dashboard. Returns per-ad: spend, revenue, ROAS, CPA, impressions, clicks, CTR. Plus _summary aggregate across all ads.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"},"include_zero":{"default":false,"type":"boolean"},"auth_account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"message":{"type":"string"},"context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"}},"required":["message"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"show_version","description":"Show the current MCP platform and adapter versions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":79,"grade":"B","scanned_at":"2026-11-01T22:10:07.789Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T22:10:07.763Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 384ms"]},"poisoning":{"score":15,"max":15,"notes":["44 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 19 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 63 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.mcp.ai/p_meta_ads","reachable":true,"authRequired":false,"latencyMs":384,"serverInfo":{"name":"mcp-ai","version":"0.9.398"}}],"packages":[],"repo":{"found":true,"owner":"mcp-dir","repo":"meta_ads-mcp","archived":false,"pushedAt":"2026-08-30T19:45:40Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/207912538?v=4","ownerCreatedAt":"2025-04-16T18:01:51Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-30T19:45:40.000Z","score":15}}}},"grade_history":[],"reviews":[]}