io.github.mikusnuz/meta-ads
NPM · @MIKUSNUZ/META-ADS-MCP
MCP server for Meta Marketing API — Facebook & Instagram ad campaign management
Available components
Last scanned (1 hour ago)
Scores higher than 58% of npm servers
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security81
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 16 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 13559 tokens (~98/item across 137 items; 134 tools + 3 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 16 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_campaign" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 135 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −1
- Stability: fail → 0.90 functional
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 95 to 98.
- 27 Oct 26 −1
No change was recorded against any check on this day. Stability & Change Management went from 98 to 92.
- 24 Oct 26 −5
- CVE-2023-54404 affects this package: high ▼ security
- Known CVEs: pass → fail ▼ security
- 20 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 19 Oct 26 −13
- Malware scan: pass → unverified ▼ security
- Judged manipulation: unverified → pass ▲ security
- Package version: 1.5.0 → 1.6.1 functional
- 17 Oct 26 +2
No change was recorded against any check on this day. Stability & Change Management went from 82 to 98.
- 15 Oct 26 −2
No change was recorded against any check on this day. Stability & Change Management went from 98 to 78.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/@mikusnuz/meta-ads-mcp@1.6.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-mrhx-c7xc-m3w5 | CVE-2023-54404 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 93 packages
| Packages resolved | 93 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_business_user ~53
Add a user to the configured business by email. Requires META_BUSINESS_ID env var.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address of the user to add | |
| role | string | yes | Role for the new user |
No output schema declared.
No examples provided.
add_to_block_list ~56
Add publisher URLs to an existing block list.
| Name | Type | Req | Description |
|---|---|---|---|
| list_id | string | yes | Block list ID |
| urls | string | yes | JSON array of URLs to block (e.g. '["example.com","bad-site.com"]') |
No output schema declared.
No examples provided.
add_users_to_audience ~101
Add users to a custom audience. Payload must be a JSON string containing hashed user data with a schema array defining the data types (e.g. EMAIL, PHONE, FN, LN).
| Name | Type | Req | Description |
|---|---|---|---|
| audience_id | string | yes | Audience ID |
| payload | string | yes | JSON string: {schema: ['EMAIL','PHONE',...], data: [['hash1','hash2',...], ...]}. All PII must be SHA-256 hashed. |
No output schema declared.
No examples provided.
batch_products ~118
Batch create, update, or delete products in a catalog. Supports up to 5,000 items per request. Update operations support upsert.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_upsert | boolean | – | Allow UPDATE to create items if they don't exist (default false) |
| catalog_id | string | yes | Product catalog ID |
| requests | string | yes | JSON array of batch requests. Each: {method: 'CREATE'|'UPDATE'|'DELETE', retailer_id: string, data?: {name, description, price, url, image_url, availability, ...}} |
No output schema declared.
No examples provided.
copy_ad ~86
Copy an existing ad. Creates a duplicate within the same or different ad set.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_id | string | yes | Source ad ID to copy |
| adset_id | string | – | Target ad set ID. If omitted, copies to same ad set |
| name | string | – | Name for the copied ad |
| status | string | – | Status for copied ad (default PAUSED) |
No output schema declared.
No examples provided.
copy_adset ~105
Copy an existing ad set. Creates a duplicate within the same or different campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| adset_id | string | yes | Source ad set ID to copy |
| campaign_id | string | – | Target campaign ID. If omitted, copies to same campaign |
| deep_copy | boolean | – | Copy ads within the ad set (default true) |
| name | string | – | Name for the copied ad set |
| status | string | – | Status for copied ad set (default PAUSED) |
No output schema declared.
No examples provided.
copy_campaign ~96
Copy an existing campaign. Creates a duplicate with optional name override. Copies structure including ad sets and ads.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | Source campaign ID to copy |
| deep_copy | boolean | – | Copy ad sets and ads within the campaign (default true) |
| name | string | – | Name for the copied campaign. Defaults to 'Copy of <original>' |
| status | string | – | Status for copied campaign (default PAUSED) |
No output schema declared.
No examples provided.
create_ad ~197
Create a new ad. Requires name, adset_id, and creative (JSON object_story_spec). Defaults to PAUSED status.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the ad in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| adset_id | string | yes | Parent ad set ID |
| creative | string | yes | JSON string of creative spec (object_story_spec with page_id, link_data/photo_data/video_data). Note: as of v26.0, a creative with applink_treatment=web_only can no longer be attached to an ad in a c… |
| name | string | yes | Ad name |
| status | string | – | Ad status (default PAUSED) |
| tracking_specs | string | – | JSON string of tracking specs array |
No output schema declared.
No examples provided.
create_adset ~972
Create a new ad set. Requires name, campaign_id, budget, optimization_goal, billing_event, and targeting. Defaults to PAUSED status.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the ad set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| adset_schedule | array | – | Hourly delivery intervals (Sunday=0). Requires lifetime budgeting. Set timezone_type explicitly; Meta defaults to USER. |
| attribution_spec | array | – | Attribution windows; Meta validates compatibility with the objective and optimization goal |
| bid_amount | string | – | Bid amount in the account currency's minor unit. Required for COST_CAP or LOWEST_COST_WITH_BID_CAP except Reach and Frequency. |
| bid_strategy | string | – | Bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS |
| billing_event | string | yes | Billing event: APP_INSTALLS, CLICKS, IMPRESSIONS, LINK_CLICKS, NONE, OFFER_CLAIMS, PAGE_LIKES, POST_ENGAGEMENT, THRUPLAY, PURCHASE, LISTING_INTERACTION |
| campaign_id | string | yes | Parent campaign ID |
| daily_budget | string | – | Daily budget in currency cents (e.g. '5000' = $50.00) |
| destination_type | string | – | Conversion destination, e.g. WEBSITE, APP, MESSENGER, INSTAGRAM_DIRECT, WHATSAPP |
| dsa_beneficiary | string | – | Beneficiary of EU-targeted ads; may use the account's saved default when omitted |
| dsa_payor | string | – | Payer of EU-targeted ads; does not automatically copy dsa_beneficiary. May use the account's saved default. |
| end_time | string | – | End time (ISO 8601) |
| lifetime_budget | string | – | Lifetime budget in currency cents |
| name | string | yes | Ad set name |
| optimization_goal | string | yes | Optimization goal: NONE, APP_INSTALLS, AD_RECALL_LIFT, ENGAGED_USERS, EVENT_RESPONSES, IMPRESSIONS, LEAD_GENERATION, QUALITY_LEAD, LINK_CLICKS, OFFSITE_CONVERSIONS, PAGE_LIKES, POST_ENGAGEMENT, QUALI… |
| pacing_type | array | – | Pacing settings. When a schedule is supplied, day_parting is required and is added if omitted. |
| promoted_object | string | – | JSON string of the promoted_object spec. Required for many objectives, e.g. OUTCOME_SALES needs {"pixel_id":"...","custom_event_type":"PURCHASE"}, OUTCOME_APP_PROMOTION needs {"application_id":"...",… |
| start_time | string | – | Start time (ISO 8601) |
| status | string | – | Ad set status (default PAUSED) |
| targeting | string | yes | JSON string of targeting spec (age_min, age_max, genders, geo_locations, interests, etc.). Advantage+ Audience automation and other flags go inside this object too, e.g. targeting_automation: {"advan… |
| validate_only | boolean | – | Validate with Meta without creating or updating the ad set (default false) |
No output schema declared.
No examples provided.
create_async_report ~276
Create an async insight report for large data queries. Returns a report_run_id to poll with get_async_report.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| breakdowns | string | – | Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, ho… |
| date_preset | string | – | Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year |
| fields | string | – | Comma-separated insight fields |
| filtering | string | – | JSON string for filtering |
| level | string | – | Aggregation level: campaign, adset, ad |
| time_increment | string | – | Time granularity: all_days, 1, 7, monthly |
| time_range | string | – | JSON string {since,until} in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_block_list ~73
Create a new publisher block list for the ad account.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the block list in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| name | string | yes | Name for the block list |
No output schema declared.
No examples provided.
create_budget_schedule ~120
Create a budget schedule on a campaign or ad set.
| Name | Type | Req | Description |
|---|---|---|---|
| budget_value | integer | yes | Unsigned value interpreted according to budget_value_type (ABSOLUTE uses currency minor units) |
| budget_value_type | string | yes | How budget_value is applied |
| parent_id | string | yes | Campaign or ad set ID that will own the budget schedule |
| parent_type | string | – | Type of parent object |
| time_end | integer | yes | Schedule end time as a Unix timestamp |
| time_start | integer | yes | Schedule start time as a Unix timestamp |
No output schema declared.
No examples provided.
create_campaign ~520
Create a new ad campaign. Defaults to PAUSED status. Requires name and objective. Budget can be set at campaign or ad set level.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the campaign in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| bid_strategy | string | – | Bid strategy: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. Meta defaults new campaigns to LOWEST_COST_WITH_BID_CAP, which requires a bid_amount on every ad… |
| daily_budget | string | – | Daily budget in account currency cents (e.g. '5000' = $50.00) |
| is_adset_budget_sharing_enabled | boolean | – | Whether ad sets under this campaign can share budget with each other. Required on some newer ad accounts — omitting it can cause campaign creation to fail with 'Must specify True or False in is_adset… |
| lifetime_budget | string | – | Lifetime budget in account currency cents |
| name | string | yes | Campaign name |
| objective | string | yes | Campaign objective |
| special_ad_categories | string | – | JSON array of special ad categories: HOUSING, EMPLOYMENT, FINANCIAL_PRODUCTS_SERVICES, ISSUES_ELECTIONS_POLITICS, NONE. This field is required by Meta on every campaign — pass '[]' or '["NONE"]' if n… |
| special_ad_category_country | string | – | JSON array of ISO 3166-1 alpha-2 country codes, e.g. '["US"]'. Required for ISSUES_ELECTIONS_POLITICS (which also requires authorization to run ads in those countries). For HOUSING, EMPLOYMENT, and F… |
| spend_cap | string | – | Lifetime spend cap for the campaign, in account currency cents. Once set it cannot be removed, only raised or reset — pass '0' to reset/clear it. |
| start_time | string | – | Campaign start time (ISO 8601 format) |
| status | string | – | Campaign status (default PAUSED) |
| stop_time | string | – | Campaign stop time (ISO 8601 format) |
No output schema declared.
No examples provided.
create_canvas ~87
Create a new Instant Experience (Canvas) on a Facebook Page. Requires page_id and body_elements JSON array defining the canvas layout.
| Name | Type | Req | Description |
|---|---|---|---|
| body_elements | string | yes | JSON array of canvas body elements (buttons, carousels, photos, videos, text, etc.) |
| name | string | – | Canvas name |
| page_id | string | yes | Facebook Page ID to create the canvas on |
No output schema declared.
No examples provided.
create_catalog ~90
Create a new product catalog for the ad account.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the catalog in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| name | string | yes | Catalog name |
| vertical | string | – | Catalog vertical: commerce, hotels, flights, destinations, home_listings, vehicles |
No output schema declared.
No examples provided.
create_creative ~331
Create a new ad creative with object_story_spec. The spec defines the ad content (link, photo, or video) and the associated Facebook Page. Notes for v26.0: poll_spec and the poll type under interactive_components_spec are no longer supported and will be rejected. If the advertiser has a shop, eligible creatives now default to destination_spec.destination_type=WEBSITE_AND_SHOP — set it to WEBSITE_AND_SHOP_OPT_OUT to opt out.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| asset_feed_spec | string | – | JSON string of asset_feed_spec for dynamic creative |
| degrees_of_freedom_spec | string | – | JSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop |
| destination_spec | string | – | JSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default |
| name | string | yes | Creative name |
| object_story_spec | string | yes | JSON string of object_story_spec (page_id, link_data/photo_data/video_data). Use the separate wamo_whatsapp_identity_spec parameter for WhatsApp Status ads. |
| url_tags | string | – | URL tags to append to all links |
| wamo_whatsapp_identity_spec | string | – | JSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level |
No output schema declared.
No examples provided.
create_custom_audience ~206
Create a new custom audience. Subtype determines the audience source (CUSTOM, WEBSITE, APP, OFFLINE_CONVERSION, LOOKALIKE, ENGAGEMENT, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| customer_file_source | string | – | Source of customer file: USER_PROVIDED_ONLY, PARTNER_PROVIDED_ONLY, BOTH_USER_AND_PARTNER_PROVIDED |
| description | string | – | Audience description |
| name | string | yes | Audience name |
| pixel_id | string | – | Pixel ID for website audiences |
| retention_days | integer | – | Retention period; allowed range depends on the audience source |
| rule | string | – | JSON object defining website, video, or engagement audience rules. This creates an audience; validate-only is not supported. |
| subtype | string | yes | Audience subtype |
No output schema declared.
No examples provided.
create_dynamic_creative ~261
Create a dynamic creative with asset_feed_spec. Meta automatically combines different images, videos, titles, bodies, and CTAs to find the best performing combinations.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the creative in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| asset_feed_spec | string | yes | JSON string of asset_feed_spec with arrays: images (hash), videos (video_id), bodies (text), titles (text), descriptions (text), call_to_action_types |
| degrees_of_freedom_spec | string | – | JSON object for Advantage+ creative controls, including creative_features_spec.image_animation, video_filtering, and video_uncrop |
| destination_spec | string | – | JSON object controlling the destination; set destination_type=WEBSITE_AND_SHOP_OPT_OUT to opt out of the v26 Shops default |
| name | string | yes | Creative name |
| object_story_spec | string | – | JSON object containing the associated page_id and optional instagram_user_id |
| wamo_whatsapp_identity_spec | string | – | JSON object with wamo_whatsapp_identity_id or whatsapp_phone_number for WhatsApp Status ads; sent at the creative's top level |
No output schema declared.
No examples provided.
create_experiment ~141
Create a new A/B test experiment (ad study).
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the experiment in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| cells | string | yes | JSON array of test cells: [{name, campaign_id}] |
| description | string | – | Experiment description |
| end_time | string | yes | End time in ISO 8601 or Unix timestamp |
| name | string | yes | Experiment name |
| start_time | string | yes | Start time in ISO 8601 or Unix timestamp |
| type | string | – | Study type |
No output schema declared.
No examples provided.
create_feed ~63
Create a new product feed for a catalog.
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_id | string | yes | Product catalog ID |
| file_url | string | – | URL of the feed file |
| name | string | yes | Feed name |
| schedule | string | – | JSON string for feed schedule configuration |
No output schema declared.
No examples provided.
create_lead_form ~171
Create a new lead generation form on a Facebook Page. Requires pages_manage_ads permission.
| Name | Type | Req | Description |
|---|---|---|---|
| follow_up_action_url | string | – | URL to redirect after submission |
| name | string | yes | Lead form name |
| page_id | string | yes | Facebook Page ID |
| privacy_policy_url | string | yes | URL to privacy policy |
| questions | string | yes | JSON array of questions. Each: {key: string, type: 'CUSTOM'|'EMAIL'|'PHONE'|'FULL_NAME'|'CITY'|'STATE'|'COUNTRY'|'ZIP'|'JOB_TITLE'|'COMPANY_NAME', label?: string} |
| thank_you_page | string | – | JSON object: {title: string, body: string, button_text?: string, button_type?: 'VIEW_WEBSITE'|'DOWNLOAD'} |
No output schema declared.
No examples provided.
create_lookalike_audience ~150
Create a lookalike audience based on an existing custom audience. Ratio (1-10) determines how closely the new audience resembles the source.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the audience in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| lookalike_spec | string | yes | JSON string: {country: 'US', ratio: 0.01-0.10} where ratio is the lookalike percentage (1%-10%) |
| name | string | yes | Lookalike audience name |
| origin_audience_id | string | yes | Source custom audience ID |
No output schema declared.
No examples provided.
create_offline_event_set ~80
Create a new offline conversion data set.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the event set in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| description | string | – | Event set description |
| name | string | yes | Event set name |
No output schema declared.
No examples provided.
create_product_set ~55
Create a new product set within a catalog.
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_id | string | yes | Product catalog ID |
| filter | string | – | JSON string of filter rules for the product set |
| name | string | yes | Product set name |
No output schema declared.
No examples provided.
create_rf_prediction ~165
Create a new reach & frequency prediction. Provide targeting spec as JSON string, budget in cents, and scheduling info.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the prediction in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| budget | number | yes | Budget in account currency cents |
| destination_id | string | yes | Destination ID (e.g. Facebook Page ID) |
| frequency_cap | number | yes | Maximum frequency cap per user |
| start_time | string | yes | Prediction start time (ISO 8601 or Unix timestamp) |
| stop_time | string | yes | Prediction stop time (ISO 8601 or Unix timestamp) |
| target_spec | string | yes | JSON string of targeting specification |
No output schema declared.
No examples provided.
create_rule ~106
Create a new automated rule for the ad account.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to create the rule in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| evaluation_spec | string | yes | JSON string defining rule conditions |
| execution_spec | string | yes | JSON string defining rule actions |
| name | string | yes | Rule name |
| schedule_spec | string | – | JSON string defining rule schedule |
No output schema declared.
No examples provided.
create_system_user ~51
Create a new system user in the configured business. Requires META_BUSINESS_ID env var.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name for the system user |
| role | string | yes | Role for the system user |
No output schema declared.
No examples provided.
debug_token ~47
Debug an access token to inspect its properties, permissions, expiration, and validity. Requires META_APP_ID and META_APP_SECRET.
| Name | Type | Req | Description |
|---|---|---|---|
| input_token | string | yes | Access token to debug/inspect |
No output schema declared.
No examples provided.
delete_ad ~29
Delete an ad. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_id | string | yes | Ad ID to delete |
No output schema declared.
No examples provided.
delete_adset ~33
Delete an ad set. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| adset_id | string | yes | Ad set ID to delete |
No output schema declared.
No examples provided.
delete_audience ~31
Delete a custom audience. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| audience_id | string | yes | Audience ID to delete |
No output schema declared.
No examples provided.
delete_block_list ~33
Delete a publisher block list. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| list_id | string | yes | Block list ID to delete |
No output schema declared.
No examples provided.
delete_budget_schedule ~32
Delete a budget schedule. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| schedule_id | string | yes | Budget schedule ID to delete |
No output schema declared.
No examples provided.
delete_campaign ~29
Delete a campaign. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | string | yes | Campaign ID to delete |
No output schema declared.
No examples provided.
delete_canvas ~32
Delete an Instant Experience (Canvas). This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| canvas_id | string | yes | Canvas ID to delete |
No output schema declared.
No examples provided.
delete_image ~70
Delete an ad image by hash. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID the image belongs to (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| hash | string | yes | Image hash to delete |
No output schema declared.
No examples provided.
delete_rf_prediction ~33
Delete a reach & frequency prediction. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| prediction_id | string | yes | Prediction ID to delete |
No output schema declared.
No examples provided.
delete_rule ~23
Delete an automated rule.
| Name | Type | Req | Description |
|---|---|---|---|
| rule_id | string | yes | Rule ID |
No output schema declared.
No examples provided.
delete_video ~30
Delete an ad video. This action is irreversible.
| Name | Type | Req | Description |
|---|---|---|---|
| video_id | string | yes | Video ID to delete |
No output schema declared.
No examples provided.
exchange_token ~48
Exchange a short-lived access token for a long-lived token. Requires META_APP_ID and META_APP_SECRET to be configured.
| Name | Type | Req | Description |
|---|---|---|---|
| short_lived_token | string | yes | Short-lived access token to exchange |
No output schema declared.
No examples provided.
generate_preview ~133
Generate an ad preview without needing an existing ad. Provide creative spec directly to see how it would look.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to generate the preview in (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| ad_format | string | yes | Ad format: DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, RIGHT_COLUMN_STANDARD, etc. |
| creative | string | yes | JSON string of creative spec: {object_story_spec: {...}} or {object_story_id: '...'} |
No output schema declared.
No examples provided.
get_account_activities ~107
Get activity log for the ad account. Shows changes made to campaigns, ad sets, ads, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| after | string | – | Pagination cursor for next page |
| fields | string | – | Comma-separated fields to return |
| limit | number | – | Number of results (default 25) |
No output schema declared.
No examples provided.
get_account_insights ~276
Get performance insights for the ad account. Returns metrics like impressions, clicks, spend, reach, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| breakdowns | string | – | Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, ho… |
| date_preset | string | – | Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year |
| fields | string | – | Comma-separated insight fields |
| filtering | string | – | JSON string for filtering |
| level | string | – | Aggregation level: campaign, adset, ad |
| time_increment | string | – | Time granularity: all_days, 1, 7, monthly |
| time_range | string | – | JSON string {since,until} in YYYY-MM-DD format |
No output schema declared.
No examples provided.
get_ad ~40
Get details of a specific ad by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_id | string | yes | Ad ID |
| fields | string | – | Comma-separated fields to return |
No output schema declared.
No examples provided.
get_ad_account ~79
Get details of the configured ad account including status, balance, currency, timezone, and spend info.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | – | Ad account ID to query (e.g. 'act_123' or '123'). Falls back to META_AD_ACCOUNT_ID env var if omitted. |
| fields | string | – | Comma-separated fields to return |
No output schema declared.
No examples provided.
get_ad_insights ~236
Get performance insights for a specific ad.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_id | string | yes | Ad ID |
| breakdowns | string | – | Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, ho… |
| date_preset | string | – | Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year |
| fields | string | – | Comma-separated insight fields |
| filtering | string | – | JSON string for filtering |
| level | string | – | Aggregation level: campaign, adset, ad |
| time_increment | string | – | Time granularity: all_days, 1, 7, monthly |
| time_range | string | – | JSON string {since,until} in YYYY-MM-DD format |
No output schema declared.
No examples provided.
get_ad_preview ~72
Get a preview of an ad in a specific format. Returns HTML iframe for rendering.
| Name | Type | Req | Description |
|---|---|---|---|
| ad_format | string | yes | Ad format: DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, RIGHT_COLUMN_STANDARD, etc. |
| ad_id | string | yes | Ad ID |
No output schema declared.
No examples provided.
get_adset ~44
Get details of a specific ad set by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| adset_id | string | yes | Ad set ID |
| fields | string | – | Comma-separated fields to return |
No output schema declared.
No examples provided.
get_adset_ads ~71
Get all ads belonging to a specific ad set.
| Name | Type | Req | Description |
|---|---|---|---|
| adset_id | string | yes | Ad set ID |
| after | string | – | Pagination cursor for next page |
| fields | string | – | Comma-separated fields to return |
| limit | number | – | Number of results (default 25) |
No output schema declared.
No examples provided.
get_adset_insights ~240
Get performance insights for a specific ad set.
| Name | Type | Req | Description |
|---|---|---|---|
| adset_id | string | yes | Ad Set ID |
| breakdowns | string | – | Breakdown dimensions: age,gender,country,region,publisher_platform,platform_position,device_platform,comscore_market (replaces dma). Some accounts must opt in in Ads Manager for impression_device, ho… |
| date_preset | string | – | Lowercase date preset, for example: today, yesterday, last_7d, last_14d, last_30d, this_month, last_month, this_quarter, last_quarter, this_year, last_year |
| fields | string | – | Comma-separated insight fields |
| filtering | string | – | JSON string for filtering |
| level | string | – | Aggregation level: campaign, adset, ad |
| time_increment | string | – | Time granularity: all_days, 1, 7, monthly |
| time_range | string | – | JSON string {since,until} in YYYY-MM-DD format |
No output schema declared.
No examples provided.
How do I install the io.github.mikusnuz/meta-ads MCP server?
io.github.mikusnuz/meta-ads runs locally as an npm package, launched with npx -y @mikusnuz/meta-ads-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @mikusnuz/meta-ads-mcp
claude mcp add mikusnuz-meta-ads -- npx -y @mikusnuz/meta-ads-mcp
What is the io.github.mikusnuz/meta-ads MCP server?
io.github.mikusnuz/meta-ads is an MCP server listed in the public MCP registry as io.github.mikusnuz/meta-ads. MCP server for Meta Marketing API, Facebook & Instagram ad campaign management. This page covers its npm package (@mikusnuz/meta-ads-mcp).
Is the io.github.mikusnuz/meta-ads MCP server safe to use?
io.github.mikusnuz/meta-ads scores 78 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.mikusnuz/meta-ads MCP server expose?
io.github.mikusnuz/meta-ads exposes 134 tools: list_campaigns, get_campaign, create_campaign, update_campaign, delete_campaign, and 129 more. Their descriptions and schemas cost roughly 13,506 tokens of context every time the server is loaded.
Is the io.github.mikusnuz/meta-ads MCP server still maintained?
io.github.mikusnuz/meta-ads is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.mikusnuz/meta-ads MCP server under?
io.github.mikusnuz/meta-ads declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.