@sigvardt/meta-mcp-server
The most comprehensive MCP server for Meta Business Suite — 200+ tools across Facebook Pages, Instagram, Threads, Ads Manager, Commerce, Conversions API, and more
Versions
2.1.4latest2.1.32.1.22.1.12.1.0Tools 199
meta_list_custom_audiences Lists custom audiences in a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - limit (number): Max results (1–100, default 20) - after (string, optional): Pagination cursor Returns audience names, types, size estimates, and delivery status.
meta_get_custom_audience Gets details about a specific custom audience. Args: - audience_id (string): Custom audience ID
meta_create_custom_audience Creates a new custom audience in a Meta ad account. Supported types: - CUSTOM: Website visitors (requires Pixel), app activity, or customer list - ENGAGEMENT: People who engaged with your content - VIDEO: People who watched your videos Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - name (string): Audience name - subtype (string): CUSTOM, ENGAGEMENT, VIDEO, WEBSITE, or APP - description (string, optional): Audience description - customer_file_source (string, optional): For CUSTOM type — USER_PROVIDED_ONLY, PARTNER_PROVIDED_ONLY, BOTH_USER_AND_PARTNER_PROVIDED - retention_days (number, optional): Days to retain audience members (1–180) Returns the new audience ID. Note: Populating the audience with users is a separate step requiring the Audiences API to upload hashed data or configure a rule.
meta_create_lookalike_audience Creates a lookalike audience based on an existing custom audience or page. Args: - ad_account_id (string): Ad account ID - name (string): Audience name - origin_audience_id (string): Source custom audience ID to base the lookalike on - country (string): ISO 3166-1 alpha-2 country code (e.g., "US", "GB") - ratio (number): Lookalike size as fraction of country population (0.01–0.20, i.e. 1%–20%) Returns the new lookalike audience ID.
meta_delete_custom_audience Deletes a custom audience permanently. This cannot be undone. Args: - audience_id (string): Custom audience ID to delete
meta_generate_chart Generates a chart image (PNG) from provided data. Uses QuickChart (Chart.js) to render. Perfect for creating visual reports from Meta insights data. The chart is saved as a PNG file that can be inserted into Word docs, presentations, or shared directly. Args: - chart_type (string): 'bar', 'line', 'pie', 'doughnut', 'radar', 'polarArea', 'horizontalBar' - title (string): Chart title - labels (string[]): X-axis labels or pie slice labels - datasets (array): One or more datasets, each with: - label (string): Dataset name (e.g., "Impressions") - data (number[]): Data values matching labels - color (string, optional): CSS color (e.g., "#1877F2", "rgba(24,119,242,0.5)") - width (number): Image width in pixels (default: 800) - height (number): Image height in pixels (default: 400) - output_path (string, optional): Save PNG to this path. If omitted, returns the chart URL. - stacked (boolean, optional): Stack bars/lines (default: false) - show_values (boolean, optional): Display data values on the chart (default: false) Returns: Chart URL or file path. The URL can be opened in a browser or fetched as a PNG. Example datasets for ad performance: labels: ["Mon","Tue","Wed","Thu","Fri"] datasets: [ { label: "Impressions", data: [1200,1800,1500,2100,1900], color: "#1877F2" }, { label: "Clicks", data: [45,62,51,78,65], color: "#42B72A" } ]
meta_generate_comparison_chart Generates a side-by-side comparison chart — perfect for comparing two time periods, two campaigns, or A/B test results. Args: - title (string): Chart title - metrics (string[]): Metric names (y-axis labels) - group_a (object): { label: string, values: number[], color?: string } - group_b (object): { label: string, values: number[], color?: string } - chart_type (string): 'bar' or 'horizontalBar' (default: 'horizontalBar') - width (number): Width in pixels (default: 800) - height (number): Height in pixels (default: 400) - output_path (string, optional): Save PNG to this path Example — comparing two weeks: title: "This Week vs Last Week" metrics: ["Impressions", "Reach", "Clicks", "Spend"] group_a: { label: "Last Week", values: [12000, 8000, 450, 150] } group_b: { label: "This Week", values: [15000, 10500, 620, 185] }
meta_send_conversion_event Sends a server-side conversion event to Meta via the Conversions API. Args: - pixel_id: Meta Pixel ID - event_name: Standard events: Purchase, Lead, AddToCart, CompleteRegistration, ViewContent, Search, InitiateCheckout, AddPaymentInfo, AddToWishlist, Subscribe, StartTrial, Contact, CustomizeProduct, Donate, FindLocation, Schedule, SubmitApplication, PageView. Custom event names also accepted. - event_time: Unix timestamp - event_source_url (optional): URL where conversion happened - user_data: At minimum one of: em (hashed email), ph (hashed phone), fbc, fbp, client_ip_address, client_user_agent, external_id - custom_data (optional): { currency, value, content_name, content_ids, content_type, order_id, num_items } - event_id (optional): For deduplication with browser pixel - action_source: "website", "app", "email", "phone_call", "chat", "physical_store", "system_generated", "business_messaging", "other" - test_event_code (optional): For testing without affecting production data
meta_test_conversion_events Tests CAPI setup by sending a test event that won't affect production data. Same args as meta_send_conversion_event but auto-sets a test_event_code if not provided. Use the test_event_code from Events Manager > Test Events tab.
meta_block_user Blocks or unblocks a user from a Facebook Page. Blocked users cannot post or comment. Args: - page_id (string): Facebook Page ID - user_id (string): User ID to block/unblock - unblock (boolean): If true, unblocks the user instead
meta_list_pages Lists all Facebook Pages managed by the authenticated user. IMPORTANT: Call this tool first before any page or Instagram operations — it caches the page access tokens needed for subsequent calls. Returns: - id: Page ID (needed for other tools) - name: Page name - category: Page category - fan_count: Number of likes - followers_count: Number of followers - link: Page URL - instagram_business_account.id: Linked Instagram account ID (if any) Tip: The page tokens are cached automatically. You do not need to manage them manually.
meta_get_page Gets detailed information about a specific Facebook Page. Args: - page_id (string): The Facebook Page ID Returns page details including name, category, description, follower counts, and linked Instagram account.
meta_create_post Creates a new post on a Facebook Page. Requires: meta_list_pages must be called first to load page tokens. Args: - page_id (string): Facebook Page ID to post to - message (string): Text content of the post - link (string, optional): URL to attach to the post (creates a link preview) - published (boolean, optional): If false, saves as draft. Default true. - scheduled_publish_time (number, optional): Unix timestamp for scheduling (must be 10 min to 30 days in future; published must be false) Returns: Post ID of the created post. Notes: - Maximum post length: ~63,206 characters - Scheduling requires the page to have Page Publishing Authorization
meta_get_posts Lists posts from a Facebook Page feed. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - limit (number): Max posts to return (1–100, default 20) - after (string, optional): Cursor for next page of results Returns: List of posts with message, permalink, created time, and post ID.
meta_delete_post Deletes a post from a Facebook Page. This action is permanent and cannot be undone. Args: - post_id (string): The post ID to delete (format: {page_id}_{post_id}) - page_id (string): The Page ID (for authentication)
meta_create_photo_post Publishes a photo post to a Facebook Page. Args: - page_id (string): Facebook Page ID - url (string): Public URL of the image - caption (string, optional): Photo caption/message - published (boolean): Default true
meta_create_video_post Publishes a video post to a Facebook Page. Args: - page_id (string): Facebook Page ID - file_url (string): Public URL of the video file - title (string, optional): Video title - description (string, optional): Video description
meta_get_page_conversations Lists conversations (messages) in a Facebook Page inbox. Args: - page_id (string): Facebook Page ID - limit (number): Max conversations (1–100, default 20) - after (string, optional): Pagination cursor Requires pages_messaging permission.
meta_get_conversation_messages Gets messages from a specific Page conversation. Args: - page_id (string): Facebook Page ID (for auth) - conversation_id (string): Conversation ID (from meta_get_page_conversations) - limit (number): Max messages (1–100, default 20)
meta_send_page_message Sends a message from a Facebook Page to a user (in an existing conversation). Args: - page_id (string): Facebook Page ID - recipient_id (string): PSID (page-scoped user ID) of the recipient - message (string): Message text Requires pages_messaging permission. Only works within the 24-hour messaging window.
meta_get_page_insights Gets analytics/insights for a Facebook Page. Requires: meta_list_pages called first. Args: - page_id (string): Facebook Page ID - metrics (string[]): Current Page Insights metrics to retrieve. Safe defaults: Content views/reach: page_media_view, page_total_media_view_unique Engagement: page_post_engagements Follow growth: page_daily_follows_unique, page_daily_unfollows_unique Page views: page_views_total - period (string): Aggregation period: 'day', 'week', 'days_28', 'month' - since (string, optional): Start date YYYY-MM-DD - until (string, optional): End date YYYY-MM-DD Returns: Time-series data for each metric.
meta_get_post_insights Gets performance metrics for a specific Facebook Page post. Requires: meta_list_pages called first. Args: - post_id (string): Post ID (e.g., "page_id_post_id") - page_id (string): Page ID (for authentication) - metrics (string[]): Metrics to retrieve. Current non-video defaults: Media: post_media_view, post_total_media_view_unique Engagement: post_clicks, post_clicks_by_type Reactions: post_reactions_by_type_total, post_reactions_like_total, post_reactions_love_total, post_reactions_wow_total, post_reactions_haha_total, post_reactions_sorry_total, post_reactions_anger_total Activity: post_activity_by_action_type, post_activity_by_action_type_unique Video-only post_video_* metrics are opt-in and should only be requested for video posts. All post metrics use 'lifetime' period (cumulative from post creation).
meta_list_pixels Lists all Meta Pixels for an ad account. Args: - ad_account_id (string): Ad account ID
meta_update_page Updates a Facebook Page's profile information. Args: - page_id (string): Facebook Page ID - about (string, optional): Short description (max 255 chars) - description (string, optional): Long description - website (string, optional): Website URL - phone (string, optional): Phone number - emails (string[], optional): Contact emails - hours (object, optional): Business hours as key-value pairs (e.g., {"mon_1_open":"09:00","mon_1_close":"17:00"}) - category (string, optional): Page category (e.g., "Restaurant") - username (string, optional): Page username/vanity URL - contact_address (object, optional): Mailing address with street, city, state, zip, country Requires pages_manage_metadata permission.
meta_get_post_comments Gets comments on a Facebook Page post. Args: - post_id (string): Post ID (format: {page_id}_{post_id}) - page_id (string): Page ID (for authentication — call meta_list_pages first) - limit (number): Max comments (1–100, default 25) - order (string): 'chronological' or 'reverse_chronological' - after (string, optional): Pagination cursor - filter (string): 'toplevel' (default), 'stream' (all including replies)
meta_reply_post_comment Replies to a comment on a Facebook Page post. Args: - comment_id (string): Comment ID to reply to - page_id (string): Page ID (for token lookup) - message (string): Reply text
meta_delete_comment Deletes a comment on a Facebook Page post. Permanent action. Args: - comment_id (string): Comment ID to delete - page_id (string): Page ID (for authentication)
meta_like_object Likes or removes a like from a page post or comment, acting as the Page. Args: - object_id (string): Post ID or Comment ID - page_id (string): Page ID (for token) - unlike (boolean): If true, removes the like instead
meta_get_scheduled_posts Lists scheduled (unpublished) posts for a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20)
meta_get_page_albums Lists photo albums on a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20)
meta_get_page_events Lists events created by a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20) - time_filter (string): 'upcoming' or 'past'
meta_get_page_tagged Gets posts that tag this Facebook Page. Requires Meta App Review approval for Page Public Content Access on many apps; if unapproved, Meta returns a permission/app-review error rather than data. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20)
meta_get_page_fan_demographics Gets fan/follower demographic breakdowns for a Facebook Page via insights. Args: - page_id (string): Facebook Page ID - metrics (string[]): Demographic metrics — 'page_follows_city', 'page_follows_country'
meta_get_post_reactions Gets reaction counts (like, love, haha, wow, sad, angry) on a post. Requires the post to be visible to the token and may require Page Public Content Access or a Page token for Page-owned posts. Args: - post_id (string): Post ID
meta_update_post Updates an existing Facebook Page post's message text. Args: - post_id (string): Post ID - page_id (string): Page ID (for token) - message (string): New message text
meta_get_page_videos Lists videos uploaded to a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20) - include_thumbnails (boolean): Add thumbnails back only when needed; Meta caps page-video edge requests at 600
meta_get_visitor_posts Gets posts published by visitors on the Facebook Page wall. Requires Meta App Review approval for Page Public Content Access on many apps; if unapproved, Meta returns a permission/app-review error rather than data. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20)
meta_get_published_posts Gets posts published by the Page itself (excludes visitor posts, unlike the feed edge). Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20)
meta_get_blocked_users Lists users blocked by the Facebook Page. Args: - page_id (string): Facebook Page ID
meta_get_page_tabs Lists custom tabs on a Facebook Page. Requires Meta App Review approval for Page Public Content Access on many apps; if unapproved, Meta returns a permission/app-review error rather than data. Args: - page_id (string): Facebook Page ID
meta_get_page_picture Gets the profile picture URL for a Facebook Page. Args: - page_id (string): Facebook Page ID - size (string): Picture size — small, normal, large, square (default: large)
meta_get_post Gets detailed information about a specific Facebook post. Requires the post to be visible to the token and may require Meta App Review approval for Page Public Content Access for public Page posts. Args: - post_id (string): Post ID (format: {page_id}_{post_id})
meta_create_event Creates an event on a Facebook Page. Args: - page_id (string): Facebook Page ID - name (string): Event name - start_time (string): ISO 8601 datetime (e.g., 2024-06-15T18:00:00-0400) - end_time (string, optional): ISO 8601 datetime - description (string, optional): Event description - place (string, optional): Location name - ticket_uri (string, optional): Ticket URL
meta_get_page_locations Lists location pages for a business with multiple locations. Args: - page_id (string): Parent Facebook Page ID
meta_get_page_cta Gets the call-to-action button configured on a Facebook Page. Args: - page_id (string): Facebook Page ID
meta_get_page_photos Lists photos uploaded to a Facebook Page. Args: - page_id (string): Facebook Page ID - type (string): 'uploaded' (by page) or 'tagged' (photos page is tagged in) - limit (number): Max results (default 20) - after (string, optional): Pagination cursor for next page - before (string, optional): Pagination cursor for previous page
meta_get_page_ratings Gets ratings and reviews for a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (default 20) - after (string, optional): Pagination cursor for next page - before (string, optional): Pagination cursor for previous page
meta_subscribe_page_webhooks Subscribes your app to receive webhook updates for a Facebook Page. Args: - page_id (string): Facebook Page ID - subscribed_fields (string[]): Fields to subscribe to, e.g., feed, messages, messaging_postbacks, conversations Call without subscribed_fields to check current subscriptions.
meta_get_promotable_posts Gets posts that are eligible for boosting/promotion on a Facebook Page. Args: - page_id (string): Facebook Page ID - limit (number): Max results (default 20) - after (string, optional): Pagination cursor for next page - before (string, optional): Pagination cursor for previous page
meta_update_page_picture Updates a Facebook Page's profile picture. Args: - page_id (string): Facebook Page ID - picture_url (string): URL of the new profile picture Requires pages_manage_metadata permission.
meta_update_page_cover Updates a Facebook Page's cover photo. Args: - page_id (string): Facebook Page ID - cover_url (string, optional): URL of the new cover photo - photo_id (string, optional): ID of an existing photo to use as cover - offset_y (number, optional): Vertical offset of the cover photo (0–100) - no_feed_story (boolean, optional): If true, don't publish a feed story about the change Provide either cover_url or photo_id. Requires pages_manage_metadata permission.
meta_hide_comment Hides or unhides a comment on a Facebook Page post. Hidden comments are only visible to the comment author and their friends. This is a non-destructive alternative to deletion — useful for moderation. Args: - comment_id (string): Comment ID to hide/unhide - page_id (string): Page ID (for authentication) - is_hidden (boolean): true to hide, false to unhide Requires pages_manage_engagement permission.
meta_publish_page_story Publishes a story (photo or video) to a Facebook Page. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - media_url (string): Public URL of the image or video - media_type (enum): "photo" or "video" Returns the story ID on success.
meta_create_live_video Creates a live video broadcast on a Facebook Page. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - title (string): Title of the live video - description (string, optional): Description of the broadcast - planned_start_time (string, optional): ISO 8601 datetime for scheduled broadcasts If planned_start_time is provided, the broadcast is created as SCHEDULED_UNPUBLISHED; otherwise it goes LIVE_NOW. Returns the stream URL and live video ID.
meta_get_live_videos Lists live videos on a Facebook Page. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - broadcast_status (enum, optional): Filter by status — "LIVE", "UNPUBLISHED", "SCHEDULED_UNPUBLISHED", or "VOD" - limit (number, optional): Max results (1–100, default 10) - after (string, optional): Pagination cursor Returns live video details including title, status, views, and creation time.
meta_end_live_video Ends an active live video broadcast. Requires: meta_list_pages called first to load page tokens. Args: - live_video_id (string): The live video ID to end - page_id (string): Facebook Page ID (needed for page token auth) Ends the broadcast immediately.
meta_get_page_automated_responses Gets the current Messenger Profile automated messaging settings for a Facebook Page. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID Returns: Greeting text, ice breakers, get-started payload, persistent menu, commands, allowed domains, and account-linking URL when configured.
meta_set_instant_reply Sets the instant reply message for a Facebook Page. This is the automatic message sent immediately when someone messages the page. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - message (string): The instant reply message text - enabled (boolean, default true): Whether instant reply is enabled
meta_set_away_message Sets the away message for a Facebook Page. This is shown when the page is set to away mode. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - message (string): The away message text - enabled (boolean, default true): Whether away mode is enabled
meta_set_greeting Sets the Messenger greeting text for a Facebook Page. This is shown to users before they send their first message. Requires: meta_list_pages called first to load page tokens. Args: - page_id (string): Facebook Page ID - greeting_text (string): The greeting text (max 160 characters)
meta_publish_page_reel Publishes a Reel (short-form video) to a Facebook Page. Requires: meta_list_pages must be called first to load page tokens. Args: - page_id (string): Facebook Page ID - video_url (string): Public URL of the video file - description (string, optional): Reel description/caption - title (string, optional): Reel title Returns: The reel/video ID on success. Notes: - Video must be hosted on a publicly accessible server - FB Reels use a simpler single-step flow (no container polling needed)
meta_cross_post Publishes the same content to both a Facebook Page and Instagram simultaneously. Requires: meta_list_pages must be called first to load page tokens. Args: - page_id (string): Facebook Page ID - ig_account_id (string): Instagram professional account ID - message (string): Text content (used as FB post text and IG caption) - image_url (string, optional): Public image URL — creates photo posts on both platforms - video_url (string, optional): Public video URL — creates Reels on both platforms Logic: - If image_url: FB photo post + IG photo post (parallel) - If video_url: FB Reel + IG Reel (parallel) - If text only: FB text post only (IG doesn't support text-only posts) - Uses Promise.allSettled so one platform failing doesn't block the other Returns: Results from both platforms (which succeeded, which failed).
meta_search_ad_library Searches the Meta Ad Library for ads from any advertiser. This is a transparency tool — no ad account access needed. Args: - ad_reached_countries (string[]): Required. ISO country codes where ads were shown (e.g., ["US", "GB"]) - search_terms (string, optional): Keywords to search ad text - search_page_ids (string[], optional): Specific Page IDs to search - ad_type (string): ALL, POLITICAL_AND_ISSUE_ADS, HOUSING_ADS, EMPLOYMENT_ADS, CREDIT_ADS (default: ALL) - ad_active_status (string): ALL, ACTIVE, INACTIVE (default: ALL) - ad_delivery_date_min (string, optional): Min delivery date YYYY-MM-DD - ad_delivery_date_max (string, optional): Max delivery date YYYY-MM-DD - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor Returns: Ad creatives, spend ranges, impressions, demographics, and targeting info. Note: Requires a valid access token but does NOT require ad account ownership. Meta may still require the app to have the Ad Library API / ads_archive feature approved in App Review; unapproved apps receive permission errors.
meta_get_account_insights Gets performance insights for a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - date_preset (string): Date range preset (default: last_30d) - since (string, optional): Custom start date YYYY-MM-DD (overrides date_preset) - until (string, optional): Custom end date YYYY-MM-DD - breakdowns (string[], optional): Segment by age, gender, country, device_platform, placement, etc. Returns comprehensive metrics including: Performance: impressions, reach, clicks, spend, frequency, unique_clicks Cost: cpm, cpc, cpp, ctr, cost_per_action_type, cost_per_conversion, cost_per_inline_link_click, cost_per_outbound_click, cost_per_thruplay Engagement: actions, inline_link_clicks, inline_link_click_ctr, inline_post_engagement, outbound_clicks, outbound_clicks_ctr, social_spend Conversions: conversions, conversion_values, purchase_roas Video: video_play_actions, video_avg_time_watched_actions, video_thruplay_watched_actions, video_p25/p50/p75/p95/p100_watched_actions Quality: quality_ranking, engagement_rate_ranking, conversion_rate_ranking
meta_get_campaign_insights Gets performance insights for campaigns in a Meta ad account. Args: - ad_account_id (string): Ad account ID - campaign_id (string, optional): Specific campaign ID (omit for all campaigns) - date_preset (string): Date range preset (default: last_30d) - since (string, optional): Custom start date YYYY-MM-DD - until (string, optional): Custom end date YYYY-MM-DD - breakdowns (string[], optional): Segment by age, gender, country, device_platform, etc. Returns per-campaign spend, impressions, clicks, CTR, and actions.
meta_get_adset_insights Gets performance insights for ad sets. Args: - ad_account_id (string): Ad account ID (use for all ad sets) - adset_id (string, optional): Specific ad set ID - campaign_id (string, optional): All ad sets in a campaign - date_preset (string): Date range preset (default: last_30d) - since / until (string, optional): Custom date range YYYY-MM-DD - breakdowns (string[], optional): age, gender, country, device_platform, etc. Provide ad_account_id or campaign_id or adset_id.
meta_get_ad_insights Gets performance insights at the individual ad level. Args: - ad_account_id (string, optional): All ads in account - campaign_id (string, optional): All ads in campaign - adset_id (string, optional): All ads in ad set - ad_id (string, optional): Specific ad - date_preset (string): Date range preset (default: last_30d) - since / until (string, optional): Custom date range YYYY-MM-DD - breakdowns (string[], optional): age, gender, country, device_platform, etc. Provide one of: ad_id, adset_id, campaign_id, or ad_account_id.
meta_list_product_catalogs Lists product catalogs for a Meta business. Args: - business_id (string): The business ID - limit (number): Max results (1–100, default 25) Returns catalog IDs, names, product counts, and verticals.
meta_get_product_catalog Gets details for a single product catalog. Args: - catalog_id (string): The catalog ID Returns catalog name, product count, vertical, business info, and store settings.
meta_list_products Lists products in a product catalog. Args: - catalog_id (string): The catalog ID - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor - filter (object, optional): Filter criteria (e.g., { availability: "in stock" }) Returns product IDs, names, prices, availability, and more.
meta_get_product Gets details for a single product. Args: - product_id (string): The product ID Returns full product details including price, availability, sale price, condition, and inventory.
meta_create_product Adds a product to a catalog. Args: - catalog_id (string): The catalog ID - name (string): Product name - description (string): Product description - price (number): Price in cents - currency (string): Currency code (default "USD") - availability (enum): "in stock", "out of stock", "preorder", "available for order" - image_url (string): Product image URL - url (string): Product page URL - brand (string, optional): Brand name - category (string, optional): Product category - retailer_id (string): Your unique product ID Returns the created product ID.
meta_update_product Updates a product's details. Args: - product_id (string): The product ID - name, description, price, availability, image_url, url (all optional) Returns confirmation of the update.
meta_delete_product Deletes a product from a catalog. Args: - product_id (string): The product ID This action is permanent and cannot be undone.
meta_list_product_sets Lists product sets (subgroups) in a catalog. Args: - catalog_id (string): The catalog ID - limit (number): Max results (1–100, default 25) Returns product set IDs, names, filters, and product counts.
meta_list_product_feeds Lists product feeds for a catalog. Feeds are automated data sources that keep catalogs up-to-date. Args: - catalog_id (string): Product catalog ID - limit (number): Max results (1–100, default 25) Returns feed IDs, names, schedules, and latest upload status.
meta_create_product_feed Creates a new product feed for a catalog to automatically sync products from a URL. Args: - catalog_id (string): Product catalog ID - name (string): Feed name - schedule_url (string): URL of the product feed file (CSV, TSV, XML) - schedule_interval (string): How often to fetch — HOURLY, DAILY, WEEKLY, MONTHLY Returns the new feed ID.
threads_get_profile Gets the authenticated user's Threads profile. Returns: User ID, username, name, bio, and profile picture URL. Requires: THREADS_ACCESS_TOKEN env var.
meta_create_pixel Creates a new Meta Pixel for conversion tracking. Args: - ad_account_id (string): Ad account ID - name (string): Pixel name
threads_get_posts Lists the authenticated user's Threads posts. Args: - threads_user_id (string): Threads user ID (from threads_get_profile) - limit (number): Max results (1–100, default 20) - since (string, optional): Start date YYYY-MM-DD - until (string, optional): End date YYYY-MM-DD - after (string, optional): Pagination cursor
threads_publish_text Publishes a text-only post to Threads. Two-step flow: creates a container, then publishes it. Args: - threads_user_id (string): Threads user ID - text (string): Post text (up to 500 characters) - reply_to_id (string, optional): Thread ID to reply to - quote_post_id (string, optional): Thread ID to quote Returns: Media ID of the published thread.
threads_publish_image Publishes an image post to Threads. Args: - threads_user_id (string): Threads user ID - image_url (string): Public URL of the image (JPEG or PNG) - text (string, optional): Caption text
threads_publish_video Publishes a video post to Threads. Args: - threads_user_id (string): Threads user ID - video_url (string): Public URL of the video (MP4) - text (string, optional): Caption text Note: Video processing may take time. Polls for up to 60 seconds.
threads_publish_carousel Publishes a carousel post (2–20 images/videos) to Threads. Three-step flow: 1. Create individual item containers 2. Create carousel container referencing them 3. Publish Args: - threads_user_id (string): Threads user ID - items (array): 2–20 items, each with url (string) and type ('IMAGE' or 'VIDEO') - text (string, optional): Caption text
threads_delete_post Deletes a Threads post permanently. Args: - media_id (string): Threads media ID to delete
threads_get_replies Gets replies to a Threads post. Args: - media_id (string): Threads media ID - reverse (boolean, optional): Reverse chronological order (default false)
threads_hide_reply Hides or unhides a reply on a Threads post. Args: - reply_id (string): Reply media ID - hide (boolean): true to hide, false to unhide
threads_get_post_insights Gets performance metrics for a specific Threads post. Args: - media_id (string): Threads media ID - metrics (string[]): Metrics to retrieve. Options: views, likes, replies, reposts, quotes, shares, reach, saved Returns: Metric values for the post.
threads_get_user_insights Gets account-level metrics for the authenticated Threads user. Args: - threads_user_id (string): Threads user ID - metrics (string[]): Options: Time-series: views, likes, replies, reposts, quotes, followers_count, reach Demographics: follower_demographics (breakdown by age, country, city, gender — requires 100+ followers) - since (string, optional): Start date YYYY-MM-DD (required for time-series metrics) - until (string, optional): End date YYYY-MM-DD - breakdown (string, optional): For follower_demographics: 'age', 'country', 'city', 'gender'
threads_check_rate_limits Checks the current publishing rate limit usage for Threads. Args: - threads_user_id (string): Threads user ID Returns: Current usage and limit quota (250 posts per 24 hours).
threads_get_post Gets details for a single Threads post by ID. Args: - media_id (string): Threads media ID
threads_get_conversation Gets the full conversation tree (all replies at all levels) for a Threads post. Args: - media_id (string): Root thread media ID - reverse (boolean, optional): Reverse chronological order
threads_get_mentions Gets posts where the authenticated user was @mentioned. Args: - threads_user_id (string): Threads user ID
threads_get_media_children Gets individual items in a Threads carousel post. Args: - media_id (string): Carousel media ID
threads_repost Reposts (shares) an existing thread to your profile. Args: - threads_user_id (string): Your Threads user ID - media_id (string): Thread media ID to repost
threads_search Searches Threads posts by keyword. Args: - threads_user_id (string): Threads user ID (for auth context) - q (string): Search query - limit (number): Max results (default 20) Note: Results are limited to the authenticated user's content and public threads.
threads_publish_gif Publishes a GIF post to Threads using a GIPHY URL. Two-step flow: creates a container, then publishes it. Args: - threads_user_id (string): Threads user ID - gif_url (string): GIPHY URL of the GIF - text (string, optional): Caption text - reply_to_id (string, optional): Thread ID to reply to - reply_control (enum, optional): Who can reply — everyone, accounts_you_follow, or mentioned_only Returns: Media ID of the published thread.
threads_publish_link Publishes a thread post with a link attachment. Args: - threads_user_id (string): Threads user ID - text (string): Post text containing the URL - link_attachment (string): URL to attach as a link preview
threads_get_followers Lists followers of the authenticated Threads user. Args: - threads_user_id (string): Threads user ID - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor Returns: User IDs, usernames, and profile picture URLs of followers. Note: Requires threads_basic scope. Only returns users who have allowed their followers list to be visible.
threads_get_following Lists accounts that the authenticated Threads user is following. Args: - threads_user_id (string): Threads user ID - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor Returns: User IDs, usernames, and profile pictures of followed accounts.
meta_list_instagram_accounts Lists all Instagram professional accounts linked to the user's Facebook Pages. Requires: meta_list_pages must be called first. Returns: Instagram account IDs, usernames, follower counts. The account ID is needed for all other Instagram tools.
meta_get_instagram_media Lists media (posts, reels, stories) from an Instagram professional account. Args: - ig_account_id (string): Instagram account ID (from meta_list_instagram_accounts) - limit (number): Max items to return (1–100, default 20) - after (string, optional): Pagination cursor
meta_publish_instagram_photo Publishes a single image post to an Instagram professional account. Two-step process: creates a media container then publishes it. Args: - ig_account_id (string): Instagram account ID - image_url (string): Public URL of the JPEG image to post (must be publicly accessible) - caption (string, optional): Post caption (supports hashtags and @mentions) - alt_text (string, optional): Alt text for accessibility (screen readers) - location_id (string, optional): Facebook Place ID to tag location Returns: Media ID of the published post. Scheduling: Pass scheduled_publish_time (Unix timestamp, 10 min – 75 days in future) to schedule the post instead of publishing immediately. Limitations: - JPEG only (no PNG, GIF, HEIC) - Max 100 posts per 24 hours - Image must be hosted on a public server
meta_publish_instagram_reel Publishes a video reel to an Instagram professional account. Args: - ig_account_id (string): Instagram account ID - video_url (string): Public URL of the video file (MP4 recommended) - caption (string, optional): Reel caption - share_to_feed (boolean, optional): Also share to feed. Default true. Returns: Media ID of the published reel. Notes: - Video must be on a publicly accessible server - Check container status before publishing — video processing can take time - Use meta_check_instagram_container to check readiness - Scheduling: Pass scheduled_publish_time (Unix timestamp, 10 min – 75 days in future) to schedule instead of publishing immediately
meta_publish_instagram_story Publishes an image or video story to an Instagram professional account. Args: - ig_account_id (string): Instagram account ID - media_url (string): Public URL of the image or video - media_type (string): 'IMAGE' or 'VIDEO' Returns: Media ID of the published story.
meta_publish_instagram_carousel Publishes a carousel post (2–10 images/videos) to Instagram. Three-step process: 1. Creates individual media containers for each item 2. Creates a carousel container referencing them 3. Publishes the carousel Args: - ig_account_id (string): Instagram account ID - items (array): Array of up to 10 items, each with: - url (string): Public image URL (JPEG) or video URL - type (string): 'IMAGE' or 'VIDEO' - caption (string, optional): Carousel caption Returns: Media ID of the published carousel. Scheduling: Pass scheduled_publish_time (Unix timestamp, 10 min – 75 days in future) to schedule instead of publishing immediately.
meta_check_instagram_publishing_limit Checks how many of the 100 API-published posts per 24-hour limit have been used. Args: - ig_account_id (string): Instagram account ID Returns: Current usage and quota remaining.
meta_check_instagram_container Checks the publishing status of an Instagram media container (used for reels/videos that need processing). Args: - container_id (string): Container ID from a publish step Returns: status_code — IN_PROGRESS, FINISHED, ERROR, EXPIRED.
meta_get_pixel Gets details for a single Meta Pixel. Args: - pixel_id (string): Pixel ID - response_format (optional): "json" or "text"
meta_get_instagram_account_insights Gets performance insights for an Instagram professional account. Args: - ig_account_id (string): Instagram account ID - metrics (string[]): Metrics to retrieve. Options: Interactions: accounts_engaged, total_interactions, likes, comments, shares, saves, replies, reposts, reach, views, profile_links_taps, account_repost_count Legacy: impressions (deprecated v22.0+), follower_count, email_contacts, phone_call_clicks, text_message_clicks, get_directions_clicks, profile_views, website_clicks Demographics: engaged_audience_demographics, reached_audience_demographics, follower_demographics, online_followers Note: account_repost_count (Dec 2025) returns the total number of reposts across the account for the given period. - period (string): 'day', 'week', 'days_28', 'month', 'lifetime' (lifetime only for demographic metrics) - since (string, optional): Start date YYYY-MM-DD - until (string, optional): End date YYYY-MM-DD - breakdown (string, optional): For demographic metrics: 'age', 'city', 'country', 'gender' - timeframe (string, optional): For demographic metrics: 'last_14_days', 'last_30_days', 'last_90_days', 'this_month', 'this_week' Note: demographic metrics require 100+ followers. online_followers only available for last 30 days.
meta_get_instagram_media_insights Gets performance metrics for a specific Instagram media object. Args: - media_id (string): Instagram media ID (from meta_get_instagram_media) - metrics (string[]): Metrics vary by media type: Photos/Carousels: reach, likes, comments, shares, saved, total_interactions, follows, profile_visits, profile_activity, views, impressions (deprecated) Reels/Video: reach, likes, comments, shares, saved, total_interactions, follows, profile_visits, profile_activity, views, ig_reels_avg_watch_time, ig_reels_video_view_total_time, reels_skip_rate, repost_count, crossposted_views, facebook_views, impressions (deprecated), plays (deprecated), clips_replays_count (deprecated) Stories: reach, shares, follows, profile_visits, profile_activity, replies, navigation, total_interactions, views, impressions (deprecated) New Reels metrics (Dec 2025): - reels_skip_rate: Percentage of viewers who skip within first 3 seconds - repost_count: Number of reposts of this media - crossposted_views: Total views across Instagram and Facebook (for crossposted content) - facebook_views: Facebook-specific views for crossposted Reels - breakdown (string, optional): 'action_type' (for profile_activity) or 'story_navigation_action_type' (for navigation)
meta_get_instagram_comments Gets comments on an Instagram media object. Args: - media_id (string): Instagram media ID - limit (number): Max comments to return (1–100, default 20)
meta_reply_instagram_comment Replies to a comment on an Instagram media object. Args: - media_id (string): Instagram media ID (not the comment ID) - message (string): Reply text - comment_id (string, optional): If replying to a specific comment Returns: Comment ID of the reply.
meta_search_instagram_hashtag Searches for a hashtag and gets its ID, then retrieves top or recent media. Two-step process: first looks up the hashtag ID, then fetches media. Args: - ig_account_id (string): Instagram account ID (required for auth context) - hashtag (string): Hashtag to search (without #) - edge (string): 'top_media' or 'recent_media' (default: top_media) - limit (number): Max results (1–50, default 20) Note: Limited to 30 unique hashtag searches per 7 days per IG account.
meta_get_instagram_user Gets public profile info for any Instagram business/creator account by username. Uses the Business Discovery API — no follow/connection required. Args: - ig_account_id (string): Your Instagram professional account ID used as the authenticated Business Discovery viewer, not the target account - username (string): Instagram username to look up (without @) Returns: Bio, follower/following counts, media count, profile picture, and recent media.
meta_get_instagram_stories Gets currently active stories for an Instagram professional account. Args: - ig_account_id (string): Instagram account ID Returns: List of active story media objects. Stories expire after 24 hours.
meta_delete_instagram_media Deletes an Instagram media object (post, reel, story). This is permanent. Args: - media_id (string): Instagram media ID to delete
meta_toggle_instagram_comments Enables or disables comments on an Instagram media object. Args: - media_id (string): Instagram media ID - enabled (boolean): true to enable comments, false to disable
meta_delete_instagram_comment Deletes a comment on an Instagram media object. This is permanent. Args: - comment_id (string): The comment ID to delete
meta_get_instagram_comment_replies Gets replies to a specific Instagram comment. Args: - comment_id (string): Parent comment ID - limit (number): Max replies (1–50, default 20)
meta_get_instagram_media_children Gets individual media items in a carousel/album post. Carousel children only expose a subset of the parent media fields, so this tool requests the child-safe fields only to avoid Meta's "Field is not available for Carousel children media" error. Args: - media_id (string): Carousel media ID
meta_get_instagram_mentioned_media Gets media where the Instagram account was @mentioned in a caption or comment. Args: - ig_account_id (string): Instagram account ID - limit (number): Max results (default 20) Requires instagram_manage_comments permission.
meta_get_instagram_recent_hashtags Gets hashtags recently searched by the Instagram account. Args: - ig_account_id (string): Instagram account ID Note: Limited to 30 unique hashtag searches per 7 days. This returns the recent searches.
meta_get_instagram_live_media Gets live video broadcasts from an Instagram account. Args: - ig_account_id (string): Instagram account ID
meta_get_instagram_product_tags Gets product tags on an Instagram media object. Requires Instagram Shopping. Args: - media_id (string): Instagram media ID
meta_publish_instagram_container Publishes a pre-created Instagram media container. Use after checking container status is FINISHED. Useful for reels/videos where container creation and publishing are done in separate steps. Args: - ig_account_id (string): Instagram account ID - container_id (string): Container ID (from a previous create step)
meta_get_instagram_single_media Gets detailed information about a specific Instagram media object. Args: - media_id (string): Instagram media ID
meta_get_instagram_conversations Lists Instagram Direct Message conversations. Args: - ig_account_id (string): Instagram account ID - folder (string): 'inbox' (default), 'spam', or 'general' - limit (number): Max conversations (1–100, default 20) - after (string, optional): Pagination cursor Requires instagram_manage_messages permission and Meta App Review approval for Instagram messaging access. Uses user token (not page token).
meta_get_instagram_messages Gets messages in an Instagram Direct Message conversation. Args: - conversation_id (string): Conversation ID (from meta_get_instagram_conversations) - limit (number): Max messages (1–100, default 20) - after (string, optional): Pagination cursor Messages are returned in reverse chronological order from the API and displayed in chronological order. Requires instagram_manage_messages permission and Meta App Review approval for Instagram messaging access.
meta_send_instagram_message Sends a text DM to an Instagram user. Args: - ig_account_id (string): Instagram account ID (sender) - recipient_id (string): Instagram-scoped user ID of the recipient - message (string): Text message to send Note: Only works within the 24-hour human agent messaging window or 7-day standard messaging window. The recipient must have messaged the account first. Returns: Message ID.
meta_send_instagram_media_message Sends an image or link via Instagram Direct Message. Args: - ig_account_id (string): Instagram account ID (sender) - recipient_id (string): Instagram-scoped user ID of recipient - image_url (string, optional): URL of image to send - link_url (string, optional): URL of link to send (as a generic template) Provide either image_url or link_url (not both). Same messaging window restrictions as text DMs. Returns: Message ID.
meta_get_instagram_broadcast_channels Deprecated. Broadcast Channels are not exposed by Meta's third-party Instagram APIs. This tool remains registered so callers get a structured deprecation signal instead of Meta's (#2500) Unknown path components error. Args: - ig_account_id (string): Instagram account ID Returns: Structured IG_BROADCAST_CHANNELS_DEPRECATED error with the current Meta docs URL.
meta_get_broadcast_channel_messages Gets messages in an Instagram broadcast channel. Args: - channel_id (string): Broadcast channel ID - limit (number): Max messages (1–100, default 20) - after (string, optional): Pagination cursor Returns: Paginated list of messages with type, content, and timestamps.
meta_send_broadcast_channel_message Sends a message to an Instagram broadcast channel. Args: - channel_id (string): Broadcast channel ID - message (string): Message text to send - link_url (string, optional): Clickable link to include with the message Returns: Message ID of the sent message.
meta_create_broadcast_channel_poll Creates a poll in an Instagram broadcast channel. Args: - channel_id (string): Broadcast channel ID - question (string): Poll question - options (string[]): Poll options (2–4 items) Returns: Poll/message ID.
meta_hide_instagram_comment Hides or unhides a comment on an Instagram media object. Hidden comments are only visible to the comment author. This is a non-destructive alternative to deletion — useful for moderation. Args: - comment_id (string): Comment ID to hide/unhide - is_hidden (boolean): true to hide, false to unhide
meta_get_instagram_available_catalogs Lists product catalogs available for Instagram Shopping on a professional account. Args: - ig_account_id (string): Instagram account ID Returns: Catalog IDs and names that can be used for product tagging on this account. Requires: instagram_shopping_tag_products permission.
meta_search_instagram_catalog_products Searches for products in an Instagram Shopping catalog by name. Args: - ig_account_id (string): Instagram account ID - catalog_id (string): Product catalog ID (from meta_get_instagram_available_catalogs) - q (string): Product search query Returns: Matching products that can be tagged in Instagram posts.
meta_list_ad_accounts Lists all Meta ad accounts accessible to the authenticated user. Returns ad account IDs (prefixed with act_), names, currency, status, and spend info. Call this first to get ad account IDs needed for campaign and insights tools.
meta_list_campaigns Lists campaigns for a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - status_filter (string[], optional): Filter by status: ACTIVE, PAUSED, ARCHIVED, DELETED - limit (number): Max results (1–100, default 20) - after (string, optional): Pagination cursor Returns campaign names, objectives, status, and budget info.
meta_get_campaign Gets detailed information about a specific campaign. Args: - campaign_id (string): Campaign ID
meta_create_campaign Creates a new campaign in a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - name (string): Campaign name - objective (string): Campaign objective. Common values: OUTCOME_AWARENESS, OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_APP_PROMOTION, OUTCOME_SALES - status (string): ACTIVE or PAUSED (default PAUSED) - daily_budget (number, optional): Daily budget in account currency cents - lifetime_budget (number, optional): Lifetime budget in cents (requires stop_time) - stop_time (string, optional): ISO 8601 end date (required for lifetime budget) - special_ad_categories (string[], optional): Required for housing, employment, credit ads Note: For OUTCOME_SALES objective, Advantage+ Shopping campaigns are available. These use Meta's AI to optimize targeting and placements automatically. Create a standard campaign first, then use meta_migrate_campaign_to_advantage_plus to convert it. Returns the new campaign ID.
meta_update_campaign Updates an existing campaign. Only provided fields are changed. Can also migrate a campaign to Advantage+ Shopping by setting migrate_to_advantage_plus to true. Args: - campaign_id (string): Campaign ID to update - name (string, optional): New campaign name - status (string, optional): ACTIVE, PAUSED, or ARCHIVED - daily_budget (number, optional): New daily budget in cents - lifetime_budget (number, optional): New lifetime budget in cents - migrate_to_advantage_plus (boolean, optional): Migrate this campaign to Advantage+ Shopping (keeps original campaign ID)
meta_delete_campaign Deletes (archives) a campaign. This cannot be undone. Args: - campaign_id (string): Campaign ID to delete
meta_migrate_campaign_to_advantage_plus Migrates an existing campaign to Advantage+ Shopping (formerly ASC). Advantage+ Shopping campaigns use Meta's AI to automatically optimize targeting, placements, and creative delivery for online sales. After migration, Meta handles audience selection and budget allocation across placements for better ROAS. The campaign keeps its original ID — this is an in-place conversion, not a new campaign. Args: - campaign_id (string): Campaign ID to migrate - ad_account_id (string): Ad account ID (e.g., act_123456789)
meta_list_adsets Lists ad sets for a campaign or ad account. Args: - campaign_id (string, optional): Filter by campaign ID - ad_account_id (string, optional): Ad account ID (use if not filtering by campaign) - status_filter (string[], optional): ACTIVE, PAUSED, ARCHIVED, DELETED - limit (number): Max results (default 20) - after (string, optional): Pagination cursor Provide either campaign_id or ad_account_id.
meta_create_adset Creates a new ad set within a campaign. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - campaign_id (string): Parent campaign ID - name (string): Ad set name - daily_budget (number, optional): Daily budget in cents - lifetime_budget (number, optional): Lifetime budget in cents (requires end_time) - billing_event (string): How you're charged: IMPRESSIONS, LINK_CLICKS, etc. - optimization_goal (string): What to optimize for: REACH, LINK_CLICKS, CONVERSIONS, etc. - targeting (object): Targeting spec JSON. Example: {"geo_locations": {"countries": ["US"]}, "age_min": 18, "age_max": 65} - start_time (string, optional): ISO 8601 start time - end_time (string, optional): ISO 8601 end time (required with lifetime_budget) - status (string): ACTIVE or PAUSED (default PAUSED) - placement_soft_opt_out (string[], optional): Placements to soft opt-out (up to 5% spend may still go to these). Only for Sales/Leads objectives. Returns the new ad set ID.
meta_get_delivery_estimate Gets delivery estimate for an existing ad set. Args: - adset_id (string): Ad set ID Returns: Estimated daily outcomes, reach bounds, readiness, and targeting optimization metadata.
meta_update_adset Updates an existing ad set. Only provided fields are changed. Args: - adset_id (string): Ad set ID to update - name (string, optional): New name - status (string, optional): ACTIVE, PAUSED, or ARCHIVED - daily_budget (number, optional): New daily budget in cents - end_time (string, optional): New end time ISO 8601 - placement_soft_opt_out (string[], optional): Placements to soft opt-out (up to 5% spend may still go to these). Only for Sales/Leads objectives.
meta_list_ads Lists ads for an ad set, campaign, or ad account. Args: - adset_id (string, optional): Filter by ad set - campaign_id (string, optional): Filter by campaign - ad_account_id (string, optional): List all ads in account - status_filter (string[], optional): ACTIVE, PAUSED, ARCHIVED, DELETED - limit (number): Max results (default 20) - after (string, optional): Pagination cursor Provide one of adset_id, campaign_id, or ad_account_id.
meta_create_ad Creates a new ad within an ad set. Args: - ad_account_id (string): Ad account ID - adset_id (string): Parent ad set ID - name (string): Ad name - creative_id (string): Ad creative ID (from meta_list_ad_creatives or meta_create_ad_creative) - status (string): ACTIVE or PAUSED (default PAUSED) Returns the new ad ID.
meta_update_ad Updates an existing ad's status or name. Args: - ad_id (string): Ad ID - name (string, optional): New name - status (string, optional): ACTIVE, PAUSED, or ARCHIVED
meta_list_ad_creatives Lists ad creatives for an ad account. Args: - ad_account_id (string): Ad account ID - limit (number): Max results (default 20) - after (string, optional): Pagination cursor Returns creative IDs, names, and associated page post IDs.
meta_create_ad_creative Creates an ad creative from an existing Facebook Page post. Args: - ad_account_id (string): Ad account ID - name (string): Creative name - page_id (string): Facebook Page ID that owns the post - object_story_id (string, optional): Use an existing published post as creative (format: {page_id}_{post_id}) - title (string, optional): Ad headline - body (string, optional): Ad body text - image_url (string, optional): Image URL for the creative - link_url (string, optional): Destination URL Returns the new creative ID.
meta_get_ad_preview Generates a preview URL for an ad or creative. Args: - ad_id (string, optional): Existing ad ID - creative_id (string, optional): Creative ID to preview - ad_format (string): Preview format — DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, RIGHT_COLUMN_STANDARD Provide either ad_id or creative_id.
meta_delete_ad Deletes an ad permanently. Args: - ad_id (string): Ad ID to delete
meta_delete_adset Deletes an ad set permanently. Args: - adset_id (string): Ad set ID to delete
meta_get_ad_account_users Lists users who have access to an ad account with their roles. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789)
meta_upload_ad_image Uploads an image to an ad account's image library for use in creatives. Args: - ad_account_id (string): Ad account ID - url (string): Public URL of the image to upload - name (string, optional): Name for the uploaded image Returns: Image hash (used when creating ad creatives).
meta_search_targeting_interests Searches for interest-based targeting options for ad sets. Args: - q (string): Search query (e.g., "yoga", "cooking") - limit (number): Max results (default 50) Returns: Interest IDs and names to use in ad set targeting.
meta_search_targeting_geolocations Searches for geographic targeting options (countries, regions, cities, zip codes). Args: - q (string): Location search query (e.g., "New York", "United Kingdom") - type (string): Location type — country, region, city, zip, geo_market, electoral_district - limit (number): Max results (default 25) Returns: Location keys to use in ad set targeting.
meta_search_targeting_demographics Searches for demographic targeting options (job titles, employers, education). Args: - q (string): Search query - type (string): adworkposition (job titles), adworkemployer (employers), adeducationschool (schools), adeducationmajor (majors)
meta_get_reach_estimate Estimates the potential reach for a targeting specification. Args: - ad_account_id (string): Ad account ID - targeting_spec (object): Targeting specification (same format as ad set targeting) - optimization_goal (string, optional): e.g., REACH, LINK_CLICKS, IMPRESSIONS Returns: Estimated daily reach and audience size.
meta_get_pixel_stats Gets event volume stats for a pixel (critical for verifying pixel is firing). Args: - pixel_id (string): Pixel ID - start_time (string, optional): ISO date for start of range - end_time (string, optional): ISO date for end of range - aggregation (string, optional): one of browser_type, custom_data_field, device_os, device_type, event, host, match_keys, had_pii, pixel_fire, event_detection_method, url, event_value_count, url_by_rule, event_total_counts, event_source, event_processing_results. Common picks: "event" for event-name breakdowns, "device_os" for OS breakdowns, and "url" for URL breakdowns. - event (string, optional): Filter to specific event like "Purchase" - aggregation_window (string, optional): hour, day, or week - top_n (number, optional): Return only the first N rows after Meta ordering
meta_update_pixel Updates pixel settings. Args: - pixel_id (string): Pixel ID - name (string, optional): New pixel name - first_party_cookie_status (string, optional): "EMPTY", "FIRST_PARTY_COOKIE_ENABLED", or "FIRST_PARTY_COOKIE_DISABLED" - automatic_matching_fields (string[], optional): e.g. ["em","ph","fn","ln","ct","st","zp","country","db","ge","external_id"] - data_use_setting (string, optional): "EMPTY" or "DATA_USE_SETTING_LDU"
meta_delete_pixel Deletes a Meta Pixel. Args: - pixel_id (string): Pixel ID to delete
meta_share_pixel Shares a pixel with another ad account. Args: - pixel_id (string): Pixel ID - ad_account_id (string): Target ad account ID - business_id (string): Business ID
meta_list_custom_conversions Lists custom conversions for an ad account. Args: - ad_account_id (string): Ad account ID
meta_create_custom_conversion Creates a custom conversion for tracking specific actions. Args: - ad_account_id (string): Ad account ID - name (string): Conversion name - pixel_id (string): Pixel ID to associate with - custom_event_type (string): Event type — CONTENT_VIEW, SEARCH, ADD_TO_CART, ADD_TO_WISHLIST, INITIATED_CHECKOUT, ADD_PAYMENT_INFO, PURCHASE, LEAD, COMPLETE_REGISTRATION, OTHER - rule (string): URL rule as JSON (e.g., {"url":{"i_contains":"thank-you"}})
meta_list_saved_audiences Lists saved audiences (targeting presets) for an ad account. Args: - ad_account_id (string): Ad account ID
meta_list_ad_rules Lists automated rules for an ad account. Args: - ad_account_id (string): Ad account ID
meta_list_ad_labels Lists ad labels for an ad account. Labels help organize campaigns, ad sets, and ads. Args: - ad_account_id (string): Ad account ID - limit (number): Max results (default 25) - after (string, optional): Pagination cursor - include_system_labels (boolean): Include Meta-generated placement_asset_* labels (default false)
meta_create_ad_label Creates a label for organizing ads, ad sets, or campaigns. Args: - ad_account_id (string): Ad account ID - name (string): Label name
meta_list_ad_videos Lists videos in an ad account's video library. Args: - ad_account_id (string): Ad account ID - limit (number): Max results (default 20) - thumbnails_limit (number): Number of thumbnails per video to request (0 omits thumbnails, default 1)
meta_upload_ad_video Uploads a video to an ad account's video library for use in creatives. Args: - ad_account_id (string): Ad account ID - file_url (string): Public URL of video file - title (string, optional): Video title - description (string, optional): Video description
meta_get_ad_account_activity Gets the activity/change log for an ad account. Args: - ad_account_id (string): Ad account ID - limit (number): Max results (default 25) - since (string, optional): Start date YYYY-MM-DD - until (string, optional): End date YYYY-MM-DD
meta_get_ad_account Gets detailed information about a specific ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789)
meta_get_adset Gets detailed information about a specific ad set. Args: - adset_id (string): Ad set ID
meta_get_ad Gets detailed information about a specific ad. Args: - ad_id (string): Ad ID
meta_get_ad_creative Gets detailed information about a specific ad creative. Args: - creative_id (string): Creative ID
meta_create_ad_rule Creates an automated rule for managing ads, ad sets, or campaigns. Args: - ad_account_id (string): Ad account ID - name (string): Rule name - evaluation_spec (object): Conditions that trigger the rule (e.g., {"evaluation_type":"TRIGGER","trigger":{"type":"STATS_CHANGE","field":"cost_per_result","value":"5.00","operator":"GREATER_THAN"}}) - execution_spec (object): Actions to take (e.g., {"execution_type":"PAUSE"}) - schedule_spec (object, optional): When to evaluate (e.g., {"schedule_type":"DAILY"})
meta_delete_ad_rule Deletes an automated ad rule. Args: - rule_id (string): Ad rule ID
meta_list_ad_images Lists images in an ad account's image library. Args: - ad_account_id (string): Ad account ID - limit (number): Max results (default 25)
meta_browse_targeting_categories Browses all available targeting category types for ad targeting. Args: - type (string): Category type — adTargetingCategory, adcountry, adlocale, adlanguage - limit (number): Max results (default 25) - after (string, optional): Pagination cursor
meta_create_saved_audience Creates a saved audience (reusable targeting preset) for an ad account. Args: - ad_account_id (string): Ad account ID - name (string): Audience name - targeting (object): Targeting spec object
meta_delete_saved_audience Deletes a saved audience. Args: - audience_id (string): Saved audience ID
meta_list_business_assets Lists assets (pages, ad accounts, Instagram accounts, pixels) for a Business Manager. Args: - business_id: Business Manager ID - asset_type: "owned_pages", "owned_ad_accounts", "owned_instagram_accounts", "owned_pixels" - limit (optional, default 25): Max results Returns asset details including IDs, names, and type-specific metadata.
meta_create_ad_study Creates an A/B test (ad study) to compare campaigns or ad sets. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - name (string): Study name - description (string, optional): Study description - start_time (string): ISO 8601 start time - end_time (string): ISO 8601 end time - type (enum): SPLIT_TEST or HOLDOUT - cells (array): Test cells, each with name, treatment_percentage, and optional campaign_ids/adset_ids - confidence_level (number, default 95): Statistical confidence level (e.g., 90, 95, 99) Returns: The created study ID.
meta_get_ad_studies Lists A/B tests (ad studies) for a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - limit (number): Max results (1–50, default 10) Returns: List of studies with name, type, status, dates, and results.
meta_list_ad_studies Alias for meta_get_ad_studies. Lists A/B tests (ad studies) for a Meta ad account. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - limit (number): Max results (1–50, default 10)
meta_get_ad_study_results Gets detailed results of a specific A/B test (ad study). Args: - study_id (string): The ad study ID Returns: Study details including winner, confidence level, and per-cell metrics.
meta_list_leadgen_forms Lists lead generation forms for a Facebook Page. Lead forms are used with OUTCOME_LEADS campaigns to collect user information. Requires: meta_list_pages must be called first to load page tokens. Args: - page_id (string): Facebook Page ID - limit (number): Max results (1–100, default 20) Returns form IDs, names, status, and creation times.
meta_get_leadgen_leads Gets submitted leads from a lead generation form. Requires: meta_list_pages must be called first to load page tokens. Args: - form_id (string): Lead gen form ID (from meta_list_leadgen_forms) - page_id (string): Page ID (for authentication) - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor Returns lead data including field values, creation time, and ad info.
meta_get_ad_rule Gets details for a specific automated ad rule. Args: - rule_id (string): Ad rule ID
meta_get_minimum_budgets Gets the minimum daily and lifetime budgets for an ad account by currency and bid strategy. Essential to check before creating ad sets — using a budget below the minimum causes API errors. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) Returns: Minimum budget requirements per bid strategy.
meta_list_offline_event_sets Lists custom conversions for offline conversion management on an ad account. Meta's legacy offline conversion data set ad-account edge is no longer available in current Graph versions. This tool now reads the supported customconversions edge, which returns CustomConversion nodes that can reference offline event sets or other event sources. Args: - ad_account_id (string): Ad account ID (e.g., act_123456789) - limit (number): Max results (1–100, default 25) - after (string, optional): Pagination cursor Returns: Custom conversion IDs, names, event source details, and configuration.
meta_send_offline_event Sends an offline conversion event to a Meta offline event set. Used for tracking in-store purchases, phone orders, or other offline conversions. Args: - event_set_id (string): Offline event set ID (from meta_list_offline_event_sets) - event_name (string): Event name (e.g., "Purchase", "Lead") - event_time (number): Unix timestamp of the conversion - user_data (object): Customer match data — at least one of: email, phone, fn (first name), ln (last name), ct (city), st (state), zip, country, external_id. All PII must be SHA256 hashed. - custom_data (object, optional): { currency, value, content_name, order_id } - upload_tag (string, optional): Tag for grouping uploads Returns: Number of events received.
meta_debug_token Inspects the current Meta access token to show its type, expiry, permissions, and associated app/user. Useful for diagnosing "permission denied" errors or checking when a token expires. No arguments needed — inspects the META_ACCESS_TOKEN configured in your MCP env.
meta_health_check Checks the health of the Meta MCP server: token status, cached tokens, API connectivity. Returns: Token validity, number of cached page tokens, Threads token status, and API reachability.
Permissions 3
env_vars low filesystem low shell high