Skip to main content
Glama
proxy-intell

Facebook Ads Library MCP Server

Proxy — Facebook Ads Library Hosted MCP

Facebook Ads Library MCP Server

This is a Model Context Protocol (MCP) server for the Facebook Ads Library.

With this you can search Facebook's public ads library for any company or brand, see what they're currently running and analyze their advertising. You can analyze ad images/text, analyze video ads with comprehensive insights, compare companies' strategies, and get insights into what's working in their campaigns.

Here's an example of what you can do when it's connected to Claude.

https://github.com/user-attachments/assets/a47aa689-e89d-4d4b-9df7-6eb3a81937ee


The easiest way to use the Facebook Ads Library MCP is the hosted version from Proxy (useproxy.dev). No API keys, no Gemini key, no Python, no server to run — just connect and start querying.

  • Zero setup — nothing to install, configure, or maintain

  • 🔑 No API keys — skip the ScrapeCreators and Gemini keys entirely

  • 🔌 Works everywhere — ChatGPT, Claude, Cursor, Manus, and anywhere else that supports MCP

  • 🚀 Always up to date — new tools and fixes ship automatically

👉 Get started for free at useproxy.dev →

Prefer to run it yourself? The full self-host setup is documented below.

Hosted vs. Self-Host

Hosted — Proxy (useproxy.dev)

Self-Host

Setup time

None — connect and go

Python env + config

API keys required

None

ScrapeCreators + Gemini

Infrastructure

Fully managed

You run and maintain it

Updates

Automatic

Manual git pull

Works in ChatGPT, Claude, Cursor, Manus

Best for

Most users who just want the data

Developers who want to customize the code

For most people, the hosted version is the fastest path. Choose self-host if you specifically want to modify or extend the server yourself.


Related MCP server: Ad Library MCP

Example Prompts

Single Brand Analysis

How many ads is 'AnthropicAI' running? What's their split across video and image?
What messaging is 'AnthropicAI' running right now in their ads?
Analyze the video ads from 'Nike' and extract their visual storytelling strategy, pacing, and brand messaging techniques.

Batch Analysis (New!)

Compare the current advertising strategies across Nike, Adidas, and Under Armour. Show me their ad volumes, messaging themes, and creative approaches.
Do a deep comparison to the messaging between 'AnthropicAI', 'Perplexity AI' and 'OpenAI'. Give it a nice forwardable summary.
Analyze the holiday campaign strategies for Coca-Cola, Pepsi, Dr Pepper, and Sprite. What themes are they using?
Get the current ads for all major streaming services: Netflix, Disney+, Hulu, HBO Max, Amazon Prime Video, and Apple TV+. Compare their positioning strategies.

Installation

Prerequisites

  • Python 3.12+

  • Anthropic Claude Desktop app (or Cursor)

  • Pip (Python package manager), install with python -m pip install

  • An API key for an ads data provider, set as SCRAPECREATORS_API_KEY (see configuration below)

  • A Google Gemini API key for video analysis (optional, only needed for video ads)

Prefer not to deal with API keys? See the Hosted Version above to skip setup entirely.

  1. Clone and run the install script

 git clone https://github.com/proxy-intell/facebook-ads-library-mcp.git
 cd facebook-ads-library-mcp

 # For macOS/Linux:
 ./install.sh

 # For Windows:
 install.bat

The install script will:

  • Create a virtual environment for dependency isolation

  • Install all required dependencies

  • Set up your configuration files

  1. Configure your API keys Edit the .env file that was created and add your API keys:

  • Set your ads data API key as SCRAPECREATORS_API_KEY

  • Get your Gemini API key at Google AI Studio (optional, for video analysis)

  1. Follow the displayed MCP configuration The install script will show you the exact configuration to add to Claude Desktop or Cursor.

Manual Install

If you prefer to install manually:

  1. Clone this repository

 git clone https://github.com/proxy-intell/facebook-ads-library-mcp.git
 cd facebook-ads-library-mcp
  1. Create a virtual environment and install dependencies

 python3 -m venv venv
 ./venv/bin/pip install -r requirements.txt
  1. Configure API keys Copy the template and configure your API keys: To obtain API keys:

  • Set your ads data API key as SCRAPECREATORS_API_KEY in the .env file

  • Get a Google Gemini API key here (optional, for video analysis)

  1. Connect to the MCP server Add the MCP server configuration to your Claude Desktop or Cursor config: Replace {{PATH_TO_PROJECT}} with the full path to where you cloned this repository. Note: The configuration uses the virtual environment's Python interpreter (venv/bin/python) for better dependency isolation and reliability. Note: API keys are now automatically loaded from the .env file, so you don't need to pass them as command line arguments. For Claude Desktop: Save this as claude_desktop_config.json in your Claude Desktop configuration directory at: For Cursor: Save this as mcp.json in your Cursor configuration directory at:

  2. Restart Claude Desktop / Cursor Open Claude Desktop and you should now see the Facebook Ads Library as an available integration. Or restart Cursor.


Technical Details

  1. Claude sends requests to the Python MCP server

  2. The MCP server intelligently batches and optimizes queries to the ads data API

  3. Smart caching reduces redundant API calls and improves performance

  4. Credit monitoring prevents workflow interruption with proactive error handling

  5. Data flows back through the chain to Claude with enhanced batch information

Available MCP Tools (Enhanced)

This MCP server provides tools for interacting with Facebook Ads library objects:

Tool Name

Description

Batch Support

get_meta_platform_id

Returns platform ID given one or many brand names

✅ Multiple brands

get_meta_ads

Retrieves ads for specific page(s) (platform ID)

✅ Multiple platform IDs

analyze_ad_image

Analyzes ad images for visual elements, text, colors, and composition

⚡ Enhanced caching

analyze_ad_video

Analyzes single ad video using Gemini AI for comprehensive insights

⚡ Enhanced caching

analyze_ad_videos_batch

NEW - Analyzes multiple videos in single API call for token efficiency

🎬 ~88% token savings

get_cache_stats

Gets statistics about cached media (images and videos) and storage usage

-

search_cached_media

Searches previously analyzed media by brand, colors, people, or media type

-

cleanup_media_cache

Cleans up old cached media files to free disk space

-


Troubleshooting

Common Issues

🆕 API Credits Exhausted:

  • When you see an "API credits exhausted" message, you need to top up your account

  • The error message includes a direct link to your provider's dashboard

  • You can check your current credit balance and purchase more credits there

  • The server will automatically resume working once credits are available

🆕 Rate Limit Exceeded:

  • If you hit rate limits, the server will tell you how long to wait

  • Batch operations help reduce the chance of hitting rate limits

  • Consider spacing out large batch requests if you frequently hit limits

API Key Not Found Error:

  • Ensure your .env file is in the project root directory

  • If you don't have a .env file, copy it from the template: cp .env.template .env

  • Check that your API keys are correctly formatted without quotes

  • Verify the .env file contains SCRAPECREATORS_API_KEY=your_key_here

  • For video analysis, ensure GEMINI_API_KEY=your_key_here is also added

Video Analysis Not Working:

  • Confirm you have a valid Google Gemini API key in your .env file

  • Video analysis requires the GEMINI_API_KEY environment variable

MCP Server Connection Issues:

  • Verify the path in your MCP configuration points to the correct location

  • Make sure you've created a virtual environment and installed dependencies with python3 -m venv venv && ./venv/bin/pip install -r requirements.txt

  • Ensure your MCP configuration uses the virtual environment Python path (ending with /venv/bin/python)

  • Restart Claude Desktop/Cursor after configuration changes

For additional Claude Desktop integration troubleshooting, see the MCP documentation. The documentation includes helpful tips for checking logs and resolving common issues.


FAQ

What is the easiest way to use the Facebook Ads Library MCP? The easiest way is the hosted version from Proxy (useproxy.dev). It requires no API keys, no installation, and no server — you connect it to ChatGPT, Claude, Cursor, or any MCP client and start querying immediately. You can start for free.

Do I need an API key to use this MCP? Only if you self-host. The hosted version at useproxy.dev handles all data access for you, so no ScrapeCreators or Gemini keys are needed. Self-hosting requires a SCRAPECREATORS_API_KEY (and a Gemini key for video analysis).

Which MCP clients does it work with? Both the hosted and self-hosted versions work with ChatGPT, Claude (Desktop and web), Cursor, Manus, and any other client that supports the Model Context Protocol.

Is there a free version? Yes — the hosted version from Proxy offers a free tier so you can start analyzing ads without any setup.

Should I self-host or use the hosted version? Use the hosted version if you just want fast, reliable access to Facebook Ads Library data with zero maintenance — this fits most users. Self-host only if you want to modify or extend the server code yourself.


Feedback

Your feedback will be massively appreciated. Please tell us which features on that list you like to see next or request entirely new ones.


License

This project is licensed under the MIT License.


Made with ❤️ by the team at Proxy.

Available Tools

8 tools
analyze_ad_imageA
Read-only

REQUIRED for analyzing images from Facebook ads. Download and analyze ad images to extract visual elements, text content, colors, people, brand elements, and composition details. This tool should be used for EVERY image URL returned by get_meta_ads when doing comprehensive analysis. Uses intelligent caching so multiple image analysis calls are efficient and cost-free.

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idNo
brand_nameNo
media_urlsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only (readOnlyHint=true) and open-world (openWorldHint=true). The description adds the behavioral insight of intelligent caching, which makes repeated calls efficient and cost-free. It does not contradict the annotations and provides useful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with 'REQUIRED' and the core purpose. Every sentence adds value: purpose, usage context, and caching benefit. There is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives strong usage context and lists what elements will be extracted, partially covering return value expectations. However, it omits parameter explanations and does not describe the output format or error handling. For a tool with no output schema and zero param documentation, this leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions 'every image URL' which maps to the media_urls parameter, but it does not explain the purpose of ad_id or brand_name, nor the string-or-array flexibility of media_urls. Only minimal parameter insight is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyzing images from Facebook ads. It specifies the action (download and analyze), the resource (ad images), and the extracted elements (visual elements, text, colors, people, brand, composition), distinguishing it from the video-analyzing sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: it is REQUIRED for every image URL from get_meta_ads during comprehensive analysis. This names the specific source tool and implies the alternative (analyze_ad_video) for video URLs, making the when-to-use decision clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_ad_videoA
Read-only

REQUIRED for analyzing video ads from Facebook. Download and analyze ad videos using Gemini's advanced video understanding capabilities. Extracts visual storytelling, audio elements, pacing, scene transitions, brand messaging, and marketing strategy insights. Uses intelligent caching for efficiency and includes comprehensive video analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idNo
media_urlYes
brand_nameNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, which covers safety. The description adds behavioral context by mentioning that it downloads videos, uses Gemini's capabilities, and employs intelligent caching. This goes beyond the annotations without contradicting them, offering useful context about how the tool operates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with three sentences that front-load the key purpose and then list specific analysis capabilities and the caching feature. Every sentence adds value without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should explain return values. It lists the types of insights extracted (visual storytelling, audio, etc.) but does not describe the response structure or how the output is presented. This leaves gaps for an agent expecting to use the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters beyond implying media_url is the video source. It fails to clarify the purpose of ad_id and brand_name, leaving the agent without guidance on how these optional parameters affect the analysis.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's primary function: 'analyzing video ads from Facebook' and 'Download and analyze ad videos'. It specifies the verb (analyze), resource (video ads), and source platform (Facebook), which distinguishes it from sibling tools like analyze_ad_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description emphasizes 'REQUIRED for analyzing video ads from Facebook', clearly indicating the primary use case. However, it does not explicitly mention when not to use it or name alternatives such as analyze_ad_image or analyze_ad_videos_batch, so it lacks explicit exclusions and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_ad_videos_batchA
Read-only

REQUIRED for batch analyzing multiple video ads from Facebook for maximum token efficiency. Download and analyze multiple ad videos using Gemini's advanced video understanding in a single API call. This significantly reduces token costs compared to individual video analysis. Uses intelligent caching and includes comprehensive batch video analysis with shared prompt optimization.

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_idsNo
media_urlsYes
brand_namesNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful context about 'intelligent caching' and 'shared prompt optimization,' but does not disclose potential limitations like rate limits, video size caps, or failure behavior for a batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is around 40 words across four sentences, which is acceptable, but it redundantly mentions token efficiency twice ('maximum token efficiency' and 'reduces token costs') and includes vague filler like 'comprehensive batch video analysis.' It is front-loaded with 'REQUIRED' but could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only 0% schema coverage, the description should explain what the batch analysis returns (e.g., per-ad results, aggregated summary) and any input constraints (e.g., URL count, formats, auth). It only provides high-level intent and benefits, leaving critical gaps for a batch processing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameters. It only alludes to media_urls via 'video ads' and completely omits ad_ids and brand_names. It does not clarify the role of optional parameters or how they affect batch output, leaving the agent under-informed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is 'REQUIRED for batch analyzing multiple video ads from Facebook' and details its function: 'Download and analyze multiple ad videos using Gemini's advanced video understanding in a single API call.' This distinct verb+resource specification and emphasis on batch processing cleanly separates it from the sibling analyze_ad_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly positions the tool as the required choice for batch analysis and highlights 'significantly reduces token costs compared to individual video analysis.' This gives a clear when-to-use signal, but it does not explicitly name the sibling analyze_ad_video or state scenarios where individual analysis would be preferable, leaving a small gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cleanup_media_cacheA

REQUIRED for cleaning up old cached media files (images and videos) and freeing disk space. Use this tool when users want to remove old cached media, clean up storage space, or when cache becomes too large. Essential for cache maintenance and storage management.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_age_daysNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, so the description correctly implies a mutation operation. It adds that the tool 'removes old cached media' and 'frees disk space,' but it does not disclose whether deletion is permanent/reversible, whether it requires special permissions, or what happens to associated metadata. For a deletion tool, this lacks critical safety info, but the core action is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is redundant and has fluff: the opening 'REQUIRED' is unexplained, 'cleaning up old cached media files' is repeated as 'cache maintenance,' and 'Essential for' adds little. It could be trimmed to one or two sentences without losing meaning. It is not overly long, but not tight either.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the primary use case and when to trigger it. However, it omits the parameter's role, any return value or success/failure indications, and the irreversible nature of deletion. Given the low complexity, this is borderline adequate but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter, max_age_days, and schema_description_coverage is 0%. The description makes no mention of this parameter, leaving the agent to infer its purpose from the name alone. Since the description does not compensate for the low coverage, the parameter's meaning (how age is defined, default behavior, impact of changing it) remains ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as cleaning up old cached media files (images and videos) and freeing disk space, which is a specific action on a specific resource. It distinguishes itself from sibling tools like analyze_ad_video and search_cached_media by focusing on deletion/cleanup rather than analysis or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'when users want to remove old cached media, clean up storage space, or when cache becomes too large.' It provides clear context and a user-intent trigger, though it does not explicitly mention when not to use it or suggest alternative sibling tools such as get_cache_stats for checking cache size.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cache_statsA
Read-only

REQUIRED for checking media cache status and storage usage. Use this tool when users ask about cache statistics, storage space used by cached media (images and videos), or how many files have been analyzed and cached. Essential for cache management and monitoring.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint=true, so the safe-read nature is established. The description adds useful behavioral context about what it reports (storage usage, file counts) beyond the annotation, without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact (two sentences) with the key purpose front-loaded ('REQUIRED'). The final sentence 'Essential for cache management and monitoring' is slightly redundant but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only stats tool with clear annotations, the description adequately provides purpose and usage context. It describes what data is reported (storage space, cached file counts) even without an output schema, making it complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100% (vacuously). The description need not explain parameters, making baseline 4 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is for 'checking media cache status and storage usage' and lists specific metrics (storage space, files analyzed and cached). This distinguishes it from sibling tools like cleanup_media_cache (mutation) and search_cached_media (search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'REQUIRED' and names concrete user intents ('cache statistics', 'storage space used', 'how many files have been analyzed'). It does not mention exclusions or alternatives, but the use cases are clear enough for a no-parameter read-only tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_meta_adsA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNo
limitNo
countryNo
platform_idsYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the readOnlyHint=true annotation, the description adds useful behavioral context beyond safety: it fetches only active ads, includes content/media/dates/targeting, and discloses that visual analysis requires a separate tool. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with front-loaded purpose, no redundancy, and each sentence adds essential information about usage and limitations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose, usage sequence, output fields, and a key limitation. However, it omits explanations for optional parameters and does not describe the return structure in detail, which is more critical given the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate but only explains the required platform_ids parameter. The optional parameters trim, limit, and country are not described, leaving their meaning unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve currently running ads for a brand using their Meta Platform ID,' identifying the action, resource, and scope. It distinguishes itself from sibling tools like get_meta_platform_id and analyze_ad_image by explicitly naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage guidance: 'Use this tool after getting a platform ID from get_meta_platform_id' and directs users to 'MUST also use analyze_ad_image on the media_url' for visual analysis, covering both workflow and complementary alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_meta_platform_idA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_namesYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal read-only (readOnlyHint=true) and open-world (openWorldHint=true) behavior. The description adds that it searches the live Facebook Ad Library and returns platform IDs, but does not disclose multiple-match behavior, failure modes, or rate limits. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose, but sentences 1 and 3 repeat nearly the same information ('Search for companies or brands...' and 'searches the Facebook Ad Library to find matching brands'). It could be tightened to two sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only search, the description explains the core output (platform IDs) and the integration point (before ad retrieval). However, with no output schema, it omits details about no-match results, multiple IDs per brand, and response format, leaving some uncertainty.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for brand_names. The description mentions 'companies or brands' and 'matching brands,' but does not specify accepted format (string vs array), matching semantics (exact/fuzzy), or handling of multiple brands. It only partially compensates for missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Search for companies or brands in the Meta Ad Library and return their platform IDs.' It clearly distinguishes from sibling get_meta_ads by framing this as the prerequisite ID lookup step ('before retrieving their ads').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit context: 'Use this tool when you need to find a brand's Meta Platform ID before retrieving their ads.' It does not mention exclusions or alternatives, but the workflow positioning makes the target use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cached_mediaA
Read-only

REQUIRED for finding previously analyzed ad media (images and videos) in cache. Use this tool when users want to search for cached media by brand name, find media with people, search by colors, or filter by media type. Essential for retrieving past analysis results without re-downloading media.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
brand_nameNo
has_peopleNo
media_typeNo
color_containsNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only (readOnlyHint=true), so the description adds some context about retrieving past analysis results and avoiding re-downloads. However, it does not disclose return format, pagination behavior, or any limitations, which leaves gaps beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with 'REQUIRED' and a clear purpose. It efficiently covers use cases and benefits, though the final sentence partially restates the first, making it slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with all optional parameters and no output schema, the description gives a clear role and use cases but lacks details on returned fields and limit behavior. The agent would benefit from more explicit information about what the search results contain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions four of five parameters (brand_name, has_people, color_contains, media_type) but does not explain value formats (e.g., how to specify colors) or the limit parameter. This provides partial but not complete parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches previously analyzed ad media (images and videos) in cache, with specific use cases such as searching by brand name, people, colors, and media type. It distinguishes itself from sibling analysis and cache management tools by emphasizing retrieval of past results without re-downloading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool for searching cached media with various filters and frames it as REQUIRED and Essential. It implies alternatives by noting retrieval without re-downloading, but does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clear, distinct purposes: platform ID lookup, ad retrieval, image analysis, and cache management are well-separated. The only overlap is between analyze_ad_video and analyze_ad_videos_batch, where the batch variant explicitly handles multiple videos, reducing confusion.

Naming Consistency4/5

Naming consistently uses snake_case with verb_noun structure (get_, analyze_, search_, cleanup_). Minor inconsistency exists between cache-related names: get_cache_stats, search_cached_media, cleanup_media_cache use different noun forms, but overall the pattern is predictable.

Tool Count5/5

With 8 tools, the set is well-scoped for the server's purpose of browsing and analyzing Facebook Ad Library content while managing local cache. Each tool serves a distinct function, and the count feels neither sparse nor bloated.

Completeness4/5

The surface covers the core workflow: find platform ID, retrieve ads, analyze images and videos, and manage cache lifecycle. Minor gaps exist like no direct tool for ad text extraction or insights, but the provided tools are sufficient for the stated analysis and caching focus.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/proxy-intell/facebook-ads-library-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server