Skip to main content
Glama
mambalabsdev

mcp-meta-ad-library-monitor

Find Meta Ads

find_meta_ads
Read-onlyIdempotent

Find a company's ads in Meta Ad Library, returning one row per ad with creative text, headline, dates, platforms, and snapshot URL. Use it to verify brand advertising or run a competitor teardown.

Instructions

Search the Meta Ad Library for a company's ads through Facebook's sanctioned Graph API and return ONE FLAT ROW PER AD with creative text, headline, delivery dates, the Meta surfaces it ran on and Meta's permanent snapshot URL for the rendered ad. COVERAGE IS NOT UNIVERSAL: the Ad Library holds all ads only in the EU and only political and issue ads elsewhere, so a commercial advertiser outside the EU is legitimately absent and every row carries a coverage note saying what the search could have found. Requires the CALLER's own Meta app access token. Impressions and spend exist for political ads only and arrive as bands, so a null there is not zero spend. Read only; requires an APIFY_TOKEN and consumes Apify credits per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
maxAdsNoHow many ad rows to return per company. This is a cost dial, not a change of answer: the row always reports how many ads matched before the cap. Sent as a string for Clay compatibility.
ad_typeNoALL returns every ad the Ad Library holds for those countries. POLITICAL_AND_ISSUE_ADS narrows to the political archive, which is the only archive that carries impressions and spend, and which requires a verified identity on your Meta account. Sent as a string for Clay compatibility.
skipCacheNoWhen "false" (default) a successful lookup is cached for seven days and reused, which costs you nothing on a repeated run. Set "true" to force a fresh fetch. Sent as a string for Clay compatibility.
media_typeNoNarrow to a creative format. Useful for a creative teardown where you only care about video, and irrelevant for a simple "are they advertising" check. Sent as a string for Clay compatibility.
company_nameNoStrongly recommended here. Meta advertiser search is a fuzzy text search over page names, so the company name is what the identity gate compares a matched page against. Without it the gate falls back to the domain stem, which is weaker.
company_domainNoBare company domain, for example gymshark.com. Used to derive the advertiser search term when no company name is given, and used by the identity gate to check that a matched advertiser page really is this company.
metaAccessTokenNoYOUR OWN Meta app access token, free to create at developers.facebook.com. REQUIRED: the Ad Library API is not open. Political and issue ad data additionally requires a verified identity on your Meta account, which is Meta requirement and not ours. Marked secret, so the value never renders on this page.
ad_active_statusNoWhether to return currently running ads, stopped ads, or both. ACTIVE is the default because a currently running ad is the buying signal; ALL is what you want for a creative history or a competitive teardown. Sent as a string for Clay compatibility.
ad_reached_countriesNoWhich country audiences to search. This parameter is REQUIRED by Meta and a request without it fails outright. The EU set is where the Ad Library covers ALL ads rather than only political ones, so it is the default. Sent as a string for Clay compatibility.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.0.1

TDQS

A4.5/5.0
Behavior5/5

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

The annotations already mark this read-only, idempotent, and non-destructive, and the description adds substantial behavioral context beyond that: it requires the caller's own Meta token, consumes Apify credits, explains that spend/impressions are bands only for political ads, and clarifies that a null spend is not zero. These are exactly the non-obvious behaviors an agent needs to interpret results correctly.

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 dense but every sentence earns its place: purpose, output format, coverage caveat, auth requirement, spend interpretation, and cost implications. It front-loads the core function and returns details before constraints, making it easy for an agent to quickly classify the tool.

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?

There is no output schema, so the description correctly explains the return shape and key interpretation rules. It also covers external prerequisites, cost, coverage limits, and the distinction between political and non-political data. For a tool with nine parameters and external dependencies, this is complete enough for an agent to select and invoke it correctly.

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 100%, so the baseline is 3. The main description does not need to restate parameter meanings; it does add global context about the EU coverage default and the identity gate, but the individual parameter semantics are already fully documented in the schema. Nothing is missing, but the description itself does not carry the parameter burden.

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 and resource: 'Search the Meta Ad Library for a company's ads through Facebook's sanctioned Graph API.' It also defines the output shape precisely: 'ONE FLAT ROW PER AD with creative text, headline, delivery dates...' This goes well beyond a vague restatement and makes the tool's function unmistakable even without sibling tools.

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?

There are no sibling tools to contrast against, but the description gives strong contextual usage guidance: it warns that coverage is not universal, that a commercial advertiser outside the EU may legitimately be absent, and that political/issue data is a separate archive. It stops short of an explicit 'use this when... / don't use this when...' checklist, so it earns a 4 rather than a 5.

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

Install Server

Other Tools

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/mambalabsdev/mcp-meta-ad-library-monitor'

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