The most visual MCP server for the Facebook Ad Library. Search any advertiser and your AI surfaces real creatives in-context.
The Meta Ads Library MCP server provides 5 tools with clear, actionable descriptions and detailed parameter documentation. Tool names follow verb-noun conventions and descriptions explicitly state when and how to use each tool. However, there are significant gaps in parameter schema formality (union types are used but not with full JSON Schema rigor), output schemas are not documented, and error handling lacks recovery guidance. The server is well-positioned for basic usage but lacks production-grade polish in schema formality and error taxonomy.
Analyze the visual elements, design, colors, and content of an ad image using AI vision capabilities. Use this tool after getting ad media URLs from get_meta_ads to understand the visual creative details, design patterns, color schemes, text elements, and other visual aspects of advertisements.
Analyze the visual elements, content, messaging, and creative strategy of an ad video using AI vision capabilities. Use this tool after getting ad media URLs from get_meta_ads to understand video creative details, scene composition, messaging, pacing, and other visual aspects of video advertisements.
Analyze multiple ad images or videos in a single batch request for efficiency. Use this tool to analyze multiple creatives at once, ideal for comparing advertising strategies across multiple ads.
Retrieve currently running ads for a brand using their Meta Platform ID. Use this tool after getting a platform ID from get_meta_platform_id. This tool fetches active advertisements from the Meta Ad Library, including ad content, media URLs, dates, and targeting information. For complete analysis of visual elements, colors, design, or image content, you MUST also use analyze_ad_image on the media_url from each ad.
Output schemas are not documented. Tool responses are returned but their structure (fields, types, nested objects) is not declared. LLMs cannot reliably plan downstream tool calls or extract specific data without knowing what fields to expect.
Parameter schemas use informal union types without JSON Schema rigor. The 'brand_names' parameter in get_meta_platform_id is declared as {'type':'union','types':['string','list']} rather than using JSON Schema oneOf or explicit type arrays. This reduces machine readability and schema validation.
Enum constraints are missing for string parameters that accept a fixed set of values. 'analysis_type' in analyze_ad_image and analyze_ad_video accepts 'full', 'quick', or 'custom', but no enum is declared. Similarly, 'country' in get_meta_ads and 'media_type' in analyze_ads_batch have implicit constraints not expressed formally.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Search for companies or brands in the Meta Ad Library and return their platform IDs. Use this tool when you need to find a brand's Meta Platform ID before retrieving their ads. This tool searches the Facebook Ad Library to find matching brands and their associated Meta Platform IDs for ad retrieval.
Error handling lacks recovery guidance. The code snippet shows basic validation (e.g., empty brand name) but does not classify errors as retryable vs. fatal, or provide actionable next steps (e.g., 'Try search_users() with a partial name'). No evidence of handling rate limits or credit exhaustion in a way that guides the LLM.
No confirmation or dry-run pattern for potentially expensive or rate-limited operations. The get_meta_ads tool can retrieve up to 500 ads per platform ID, an expensive operation for API credits. No hint to preview or confirm before executing.
Pagination and result limits are mentioned in get_meta_ads ('default: 50, max: 500') but not all tools that return lists (e.g., analyze_ads_batch) document whether results are paginated or capped. No next_cursor or offset/limit pattern documented across tools.
analyze_ad_image and analyze_ad_video both declare 'focus_areas' as optional list parameters, but the allowed values (e.g., 'colors', 'text', 'people') are only documented in the description text, not as enum constraints. This invites hallucinated focus areas.