Meta Ad Library Spend MCP by AdSpendSpy
Server Details
Facebook and Meta Ad Library ads with estimated ad spend per ad, top landing pages and alerts.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- AdSpendSpy for Meta Ad Library
TDQS
Scored across 17 tools
There is meaningful overlap between get_advertiser_ads and list_brand_ads, which both return ads for a brand (one with spend detail, one paginated summaries), so an agent must reason about which to pick. Some pairs like check_brands_tracked vs list_tracked_brands and search_advertisers vs search_tracked_brands are well-differentiated by their descriptions, but the get-ad-for-brand overlap creates real ambiguity.
Nearly all tools follow a consistent verb_noun snake_case pattern (get_ad_details, list_alerts, search_advertisers, track_brand). Only minor deviations like 'landingpages' in get_top_landingpages_stats slightly break the pattern, but overall it's very readable and consistent.
17 tools is on the heavy side for a spend-tracking platform, and the redundancy between get_advertiser_ads and list_brand_ads plus overlapping read tools suggests some tools could be consolidated. Each tool does cover a plausibly distinct facet (alerts, projects, lists), but the surface feels wider than strictly necessary.
The read surface is broad (ads, spend stats, alerts, projects, lists), but there is a notable lifecycle gap: track_brand adds a brand with no corresponding untrack/remove tool (explicitly delegated to the website). Project and list management are read-only, leaving create/delete gaps for core entities.
Available Tools
17 toolscheck_brands_trackedCheck advertiser trackingARead-onlyIdempotentInspect
Check whether each string Meta page ID is actively tracked by your account.
Inputs: page_ids (required).
compare_advertisersCompare advertisersBRead-onlyIdempotentInspect
Compare 2 to 6 tracked advertisers side by side: category, active ads where known, estimated 30-day spend range and one top ad each. A name AdSpendSpy does not track is listed as not tracked and never replaced by a similar brand. No sign-in needed.
Inputs: brands, page_ids.
find_similar_advertisersFind similar advertisersARead-onlyIdempotentInspect
List up to six tracked advertisers similar to a brand (same Facebook page category or niche), each with category, active ads where known, estimated 30-day spend range and one top ad. No sign-in needed. Pass page_id when known, otherwise the exact brand name.
Inputs: brand, limit, page_id.
get_ad_detailsInspect an ad creativeARead-onlyIdempotentInspect
Retrieve one ad of an advertiser you actively track by its internal AdSpendSpy ad ID (internal_ad_id), not its Meta ad ID. Saved lists and favorites do not retain MCP ad access after you remove a tracked brand on the website.
Inputs: ad_id (required).
get_ad_listsRead saved ad listsARead-onlyIdempotentInspect
Read your saved lists, with ad creatives limited to advertisers you actively track. list_id selects one owned list; ad_id reports which of your lists contain that internal ad ID and takes precedence when both are supplied. Saving an ad does not bypass tracking limits.
Inputs: ad_id, list_id.
get_advertiser_adsShow an advertiser's Meta adsARead-onlyIdempotentInspect
Show one brand's active Meta ads (Facebook and Instagram). For brands AdSpendSpy tracks: active ad count, an estimated 30-day spend range split into EU/UK and US where available, and up to six top ads with image or video, headline, text, days running, platforms and landing domain. A brand name is matched exactly; if only similar names exist, it returns them as candidates and no ads. With live_lookup true and a paid AdSpendSpy plan, an untracked brand is looked up live in the Meta Ad Library (up to ten newest ads, no spend). No sign-in needed for tracked brands. Pass page_id when known, otherwise brand.
Inputs: brand, country, page_id, live_lookup.
get_pending_alert_countCount pending alertsARead-onlyIdempotentInspect
Read the number of pending alerts for your account.
Inputs: no named parameters.
get_projectsRead advertiser projectsARead-onlyIdempotentInspect
Read your projects. public_id selects one owned project; brand_id selects memberships for an actively tracked internal brand record and takes precedence when both are supplied.
Inputs: brand_id, public_id.
get_top_ads_statsAnalyze estimated ad spendARead-onlyIdempotentInspect
Analyze latest cumulative estimated spend in EUR for your tracked advertisers. page_id is an exact advertiser filter. timeframe filters when ads were last seen, NOT spend accrued during that period. Creative breakdowns sample the top 1,000 ads; response metadata states matched and sampled counts and full-match aggregate spend. Zero can mean unavailable estimates.
Inputs: q, page_id, project, category, +3 more.
get_top_landingpages_statsRank landing pages by estimated spendARead-onlyIdempotentInspect
Rank the landing pages of your tracked advertisers by latest cumulative estimated spend in EUR. Ads are grouped by landing URL with ad, advertiser and active-ad counts, the top-spending advertiser and, when one is stored, a screenshot as screenshot_url (site path) and screenshot_full_url (absolute URL). page_id is an exact advertiser filter; q matches part of the landing URL. timeframe filters when ads were last seen, NOT spend accrued during that period. Zero can mean unavailable estimates.
Inputs: q, limit, page_id, project, +2 more.
list_alertsList spend alertsARead-onlyIdempotentInspect
List spend alerts for ads of advertisers you actively track, newest first (event ad.spend_alert). Each item carries the alert threshold and the estimated spend when the alert was created. Without since_id or cursor the last 30 days are returned. since_id returns only items with a higher alert_id. Spend is a latest cumulative estimate in EUR; null means unknown. Reading alerts does not mark them as sent. Use page_id or project, not both.
Inputs: limit, cursor, page_id, project, +1 more.
list_brand_adsList advertiser adsARead-onlyIdempotentInspect
List creative summaries for one tracked advertiser, newest internal ID first, or with sort spend highest latest cumulative estimated spend first (use it for an advertiser's top ads). pagination.next_cursor returns the next page. Each ad carries internal_ad_id (AdSpendSpy ID) and meta_ad_id (the ad on Meta).
Inputs: page_id (required), sort, limit, cursor, +2 more.
list_new_adsList new ads of tracked brandsARead-onlyIdempotentInspect
List ads that newly appeared for advertisers you actively track, newest first (event ad.new). An ad counts as new when it started at most 7 days before it was first seen, so the back catalog of a freshly tracked advertiser is excluded. Without since_id or cursor the last 30 days are returned. since_id returns only items with a higher internal_ad_id. Spend is a latest cumulative estimate in EUR; null means unknown. Use page_id or project, not both.
Inputs: limit, cursor, page_id, project, +1 more.
list_tracked_brandsList tracked advertisersBRead-onlyIdempotentInspect
List your actively tracked advertisers and their string page_id values.
Inputs: project.
search_advertisersSearch Meta Ad Library advertisersARead-onlyIdempotentInspect
Search AdSpendSpy's Meta Ad Library database for an advertiser or brand by name. Returns up to five matching brands with category, logo, number of active ads where known, and the page_id. No sign-in needed.
Inputs: query (required).
search_tracked_brandsFind a tracked advertiserARead-onlyIdempotentInspect
Search your tracked advertisers by name, Meta page ID, or stored Facebook URL. Searches existing local data only; does not resolve vanity URLs through paid providers.
Inputs: q (required).
track_brandStart tracking an advertiserAIdempotentInspect
Add a known advertiser to your tracked brands before reading its ads. Changes your AdSpendSpy account: the advertiser joins your tracked brands and AdSpendSpy starts importing its ads. Requires a Meta page_id and brand_name and consumes one of your existing account tracking slots, not an extra subscription. Repeating an active tracking is idempotent, even at the limit. New imports run in the background, so ads may not be ready yet. Returns tracked_count, tracked_limit, remaining_slots and ingestion_state. There is no MCP removal tool: remove brands on the AdSpendSpy website. Does not search Meta or resolve advertiser names or URLs.
Inputs: page_id (required), brand_name (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Keyless demo: Meta Ad Library ads of one advertiser with estimated ad spend and top landing pages.
Facebook ads library with spend estimates and advertiser stats, plus Shopify product research.
Meta ads of e-commerce brands, the funnels behind them and the offers, for creative strategy.
Meta Ad Library and Google Ads Transparency video ads, plus AI teardowns and shot-by-shot analysis.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables competitive intelligence, market analysis, and advertising insights by providing 15+ advanced tools to search, analyze, monitor, and predict Facebook ad performance.288MIT
- FlicenseAqualityDmaintenanceSearches the Meta (Facebook) Ad Library by keyword and returns ad details including advertiser, ad copy, and EU reach, without requiring an API key.31-
- AlicenseAqualityCmaintenanceMeta (Facebook/Instagram) Ads MCP server for ad performance reporting, audience analysis, and competitor ad research.41MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching Meta ads by text, country, category, advertiser, or landing domain from an AI assistant, then opening individual ads and advertiser pages, ranking what is scaling, finding related ads by page or domain, and downloading images and videos for ad ids.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.