Skip to main content
Glama

Server Details

Search winning Meta ads with $50k+ in estimated spend, read hooks and scripts, and draft briefs.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
97.2% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a clearly distinct purpose: search_ads finds ads, get_ad fetches one record, list_taxonomy exposes filter values, and get_swipe_prompt generates templates. The only mild overlap is advertiser_hooks vs winning_patterns, both aggregate analytics, but they differ (per-advertiser hook counts vs taxonomy lift) and descriptions make the boundary clear.

Naming Consistency4/5

Names are uniformly snake_case with a predictable shape (get_ad, get_swipe_prompt, list_taxonomy, search_ads). Two names (advertiser_hooks, winning_patterns) are noun phrases rather than verb_noun, a minor deviation from the otherwise consistent verb-first pattern.

Tool Count5/5

Six tools is well-scoped for an ad-library API, with no redundancy or filler. Each tool earns its place across search, retrieval, taxonomy, analytics, and template generation.

Completeness4/5

The surface covers discover (search_ads), retrieve (get_ad), filter metadata (list_taxonomy), analytics (winning_patterns, advertiser_hooks), and transformation (get_swipe_prompt). The main gap is the lack of a way to search or enumerate advertisers directly, though advertiser_hooks suggests advertisers are a first-class entity.

Available Tools

6 tools
advertiser_hooksAdvertiser hooksA
Read-onlyIdempotent
Inspect

Returns the hooks, hook mechanisms and angles an advertiser uses most, counted over all of its ads in the library. advertiserId is the advertiser id shown in search_ads rows.

NameRequiredDescriptionDefault
advertiserIdYesAdvertiser id from a search_ads row

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: the result is a frequency count 'over all of its ads in the library', clarifying the aggregation scope rather than a sample or single-ad view. It omits any pagination or result-size detail.

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?

Two tight sentences, front-loaded with what is returned and its aggregation scope, with the parameter provenance tacked on second. No filler or redundancy.

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?

With no output schema, the description must carry the return-value burden, and it does explain the shape of the result (hooks, hook mechanisms, angles with counts). Missing details such as paging, limits, or ordering keep it from being fully complete, but nothing critical is absent for calling 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% and the single parameter is fully documented in the schema, so the baseline is 3. The description's note that advertiserId comes from search_ads rows largely repeats the schema's own wording, adding little new semantics.

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?

States a specific verb and resource: returns an advertiser's most-used hooks, hook mechanisms and angles, aggregated as counts across all of its ads. This distinguishes it from sibling search_ads (raw rows) and get_ad (single ad), letting an agent tell it apart without opening a schema.

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

Usage Guidelines3/5

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

There is no explicit when/when-not guidance or named alternative (e.g., winning_patterns). The one usage clue is the workflow linkage: 'advertiserId is the advertiser id shown in search_ads rows', implying you call search_ads first, but the selection criteria versus siblings is only implied.

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

get_adAd detailsA
Read-onlyIdempotent
Inspect

Returns the full record of one ad: headline, body, CTA, full transcript, metrics, spendEstimate (an ESTIMATE based on engagement, not real spend; spendLowerBound = it is a minimum, "at least"), delivery status, winnerObservation (when we first observed it above $50k), media (public URLs), links (post, Ad Library, landing page, board), tags (the same dimension and slug search_ads shows), publisher platforms and landing domain. The transcript is in English: when the ad runs in another language (e.g. Spanish), transcript is the English translation, translatedFrom names the language and transcriptOriginal holds the original script. Text fields are null when they aren't available for that ad; the links always point to the original.

NameRequiredDescriptionDefault
keyYesadKey ("meta:<id>"), a bare id or a Meta Ad Library id

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, non-open-world, so the safety bar is low. The description nonetheless adds real interpretive context beyond them: spendEstimate is engagement-derived, not real spend, spendLowerBound is a true minimum, text fields are null when unavailable, and transcripts are English translations with translatedFrom/transcriptOriginal. Operational details (auth, errors, invalid-key behavior) are absent but not critical here.

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?

Front-loaded with the purpose, then a dense but purposeful enumeration of return fields, null semantics and translation behavior. It is a long run-on paragraph, but with no output schema each clause carries information the agent cannot get elsewhere, so little is wasted.

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?

With no output schema, the description correctly carries the burden of explaining the return shape, and does so thoroughly, including null handling and translation fields. The main gap is what happens when the key doesn't resolve or is malformed, which is minor for a read-only lookup.

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?

One parameter with 100% schema description coverage — the schema already documents the accepted key formats (adKey, bare id, Meta Ad Library id). The description adds nothing about the key, so baseline 3 applies.

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

Purpose4/5

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

The first clause states a specific verb and resource: 'Returns the full record of one ad.' The scope (single ad by key, versus the sibling search_ads which lists ads) is discernible from 'one ad' and the reference to tags that 'search_ads shows,' though no sibling is explicitly named as the alternative.

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

Usage Guidelines2/5

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

The description never states when to reach for this tool versus search_ads or the other siblings, nor that it should be called after a search to expand a specific result. The search_ads mention is a field-format cross-reference, not usage guidance, so the agent must infer the lookup workflow.

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

get_swipe_promptSwipe promptA
Read-onlyIdempotent
Inspect

Returns a prompt template built from one ad, written for the user to run on their own product. The result is JSON with the template text in the template field. kind='swipe' is a template that maps the ad's beats, checks the fit with the user's product, drafts a full version with the same structure and adds alternative hooks. kind='analysis' is a template that breaks down why the ad works (audience, funnel, psychology, weak spots) and how its structure applies to a business. product and niche are written into the template; without product the template keeps a placeholder for it.

NameRequiredDescriptionDefault
keyYesadKey ("meta:<id>"), a bare id or a Meta Ad Library id
kindNoswipe = rebuild the ad for another product; analysis = why the ad worksswipe
nicheNoAngle or audience for the template (swipe only)
productNoThe user's product, written into the template
annotateNoMark the copy blocks inside the script when available (swipe only)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds useful behavior beyond that: the return is JSON with the template in a 'template' field (compensating for the missing output schema), and it discloses that product/niche are written into the template and that omitting product leaves a placeholder.

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?

Front-loaded with the core purpose and return shape, then parameter semantics. It is slightly redundant where it re-explains the 'kind' enum already documented in the schema, but every sentence still carries useful information.

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?

With no output schema, the description steps in and describes the return payload (JSON with the 'template' field). Combined with full parameter coverage and clear kind semantics, an agent has everything needed to call this correctly.

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?

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the effect of 'product' (written into the template) and the fallback placeholder when it is absent, plus distinguishing the two 'kind' behaviors. It adds real semantic value over the enum and field descriptions.

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 states a specific verb and resource: it returns a prompt template built from one ad, for the user to run on their own product. It also spells out the two output variants (kind='swipe' vs kind='analysis') in concrete terms, so an agent can distinguish this from siblings like get_ad or advertiser_hooks without opening the schema.

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

Usage Guidelines3/5

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

The description explains what each kind produces and notes the template is meant for the user's own product, which implies when to reach for it. However, it never names an alternative sibling or states when NOT to use this tool (e.g., use get_ad for the raw ad, advertiser_hooks for hooks), leaving routing to inference.

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

list_taxonomyTaxonomyA
Read-onlyIdempotent
Inspect

Lists the taxonomy dimensions of the Ad Radar library (awareness, angle, hook_pattern, vformat, pformat, landing...) with their valid values. These slugs are the values the tags filter of search_ads accepts.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and a closed-world scope, so the safety profile is fully covered. The description adds value by disclosing the shape of the result (dimensions with their valid values), but says nothing about caching, stability of slugs, or whether the list is exhaustive/fixed.

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?

Two sentences, no filler, and the primary purpose is front-loaded before the cross-reference to search_ads. Every clause earns its place.

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 compensates by stating what the tool returns (taxonomy dimensions plus their valid values) and why that matters. For a zero-parameter read-only lookup, nothing an agent needs is missing.

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 takes zero parameters, which sets the baseline at 4. Schema coverage is 100% and there is nothing for the description to clarify, so no adjustment is warranted.

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?

States a specific verb and resource ('Lists the taxonomy dimensions of the Ad Radar library') and enumerates examples of what those dimensions are, so the agent knows exactly what comes back. It also ties itself to a sibling by naming the 'tags filter of search_ads', which no other tool in the list would do.

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 second sentence establishes the reason to call it: these slugs are what the tags filter of search_ads accepts, implying it should be used to discover valid filter values before searching. It stops short of an explicit when-to-use/when-not-to-use statement or naming a fallback if the taxonomy is already known.

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

search_adsSearch adsA
Read-onlyIdempotent
Inspect

Searches the Ad Radar library of Facebook and Instagram ads from the Meta Ad Library (every ad has at least $50k estimated spend), with the same filters as the Ad Radar board. By default it returns only active ads, sorted by score, as compact rows. Each row has an adKey, which get_ad and get_swipe_prompt accept. Valid tag dimensions and slugs are the ones list_taxonomy returns. headline and body are null when the ad's text isn't available (the tags still describe the ad); in rows they are cut at 140 and 280 characters, while get_ad returns them whole. Every other value in a row matches what get_ad returns for that ad. spendEstimate is an estimate based on engagement, not reported spend; spendLowerBound true means the value is a minimum ("at least").

NameRequiredDescriptionDefault
pageNoPage number, starting at 1 (results stop at 1,000 per query)
sortNoOrder: score (Ad Radar score), reactions, rpd (reactions per day), days (days running) or recent (newest first)score
tagsNoTaxonomy filters: { "<dimension>": ["slug", ...] }. Different dimensions are ANDed, slugs within one are ORed
tierNowinner = top 10% by score and running 21+ days; rising = growing. Every ad on the radar has at least $50k estimated spend
limitNoRows per page, 1-50
mediaNoCreative type: video, image (image and carousel ads) or allall
queryNoFree text over headline, body, advertiser name and transcript
minDaysNoMinimum days running
categoriesNoAdvertiser vertical, e.g. health, pet
advertiserIdNoOnly ads of this advertiser (the advertiserId shown in search rows)
includePastWinnersNoAlso include winners that are no longer running (archive)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description layers on substantial behavior the annotations cannot convey: default filtering to active ads, sort default, row compaction, null semantics for headline/body, truncation at 140/280 characters, and the caveat that spendEstimate is an engagement-based estimate with spendLowerBound meaning a floor.

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?

Dense but front-loaded: the purpose and default behavior come first, then row semantics and caveats. Every sentence carries information, though the paragraph is long and a few clauses (truncation vs get_ad) could be split for scanning.

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?

With 11 optional params, nested tag objects and no output schema, the description compensates well by describing row shape, field provenance, truncation behavior and estimate semantics. An agent has what it needs to call it correctly and interpret the results.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it ties the tags dimensions/slugs to list_taxonomy's output as the valid source, and clarifies that adKey from rows is what get_ad and get_swipe_prompt accept. That elevates it above the schema-does-everything baseline.

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?

States a specific verb+resource (search the Ad Radar library of FB/IG ads from the Meta Ad Library) and scopes it with a concrete qualifier ($50k+ estimated spend). It distinguishes itself from siblings by naming get_ad, get_swipe_prompt and list_taxonomy and explaining how each relates.

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?

Gives clear context: default is active-only, sorted by score, compact rows; use get_ad for full untruncated text; use list_taxonomy for valid tag dimensions/slugs; adKey feeds get_ad and get_swipe_prompt. It stops short of explicit when-not/exclusion guidance, but the routing to alternatives is unambiguous.

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

winning_patternsWinning patternsA
Read-onlyIdempotent
Inspect

Returns, for each taxonomy value, how many times more often it appears among winning ads than on average (lift), with adoption (ads, advertisers) and example ads; the same data as the 'What to do now' block of the Ad Radar analytics page. doThis lists the values above average, lower the values below. exampleAdKeys are adKeys that get_ad accepts.

NameRequiredDescriptionDefault
formatNoCreative type the lift is computed onall

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value by sketching the return payload (lift, adoption by ads/advertisers, example ads), explaining the doThis vs 'lower' split at the above/below-average boundary, and confirming exampleAdKeys are valid get_ad inputs.

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?

Three dense but front-loaded sentences; the primary return shape leads and the supporting keys follow. The semicolon-heavy middle sentence is slightly compressed but every clause carries information.

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?

There is no output schema, so the description must sketch the return shape, and it does – lift, adoption, example ads, doThis/'lower' grouping. The only gap is how the format parameter affects results, which is minor for a single optional filter.

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?

Only one parameter with 100% schema description coverage, so the schema already documents the format enum and its default. The description adds nothing about how the format filter changes the computed lift, which is the baseline 3 for schema-documented parameters.

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?

States a precise verb and resource – returns lift per taxonomy value with adoption counts and example ads – and anchors it to a known artifact ('What to do now' block of Ad Radar). An agent can distinguish this from advertiser_hooks, search_ads and list_taxonomy without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied through the 'What to do now' analytics-block mapping and the note that exampleAdKeys are consumable by get_ad, which hints at a call chain. However, it never states when to prefer this over siblings like search_ads or list_taxonomy, nor any exclusion or prerequisite.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedadvertiser_hooks1 field changed
      • addedInput schema / properties / advertiserId / description
        Added value: +"Advertiser id from a search_ads row"
    • Changedget_swipe_prompt3 fields changed
      • addedInput schema / properties / kind / description
        Added value: +"swipe = rebuild the ad for another product; analysis = why the ad works"
      • changedInput schema / properties / niche / description
        Previous value: -"Angle or audience to lean into (swipe only)"New value: +"Angle or audience for the template (swipe only)"
      • changedInput schema / properties / product / description
        Previous value: -"Your product, the one the prompt is for"New value: +"The user's product, written into the template"
    • Changedsearch_ads5 fields changed
      • addedInput schema / properties / advertiserId / description
        Added value: +"Only ads of this advertiser (the advertiserId shown in search rows)"
      • addedInput schema / properties / limit / description
        Added value: +"Rows per page, 1-50"
      • addedInput schema / properties / media / description
        Added value: +"Creative type: video, image (image and carousel ads) or all"
      • addedInput schema / properties / page / description
        Added value: +"Page number, starting at 1 (results stop at 1,000 per query)"
      • addedInput schema / properties / sort / description
        Added value: +"Order: score (Ad Radar score), reactions, rpd (reactions per day), days (days running) or recent (newest first)"
    • Changedwinning_patterns1 field changed
      • addedInput schema / properties / format / description
        Added value: +"Creative type the lift is computed on"
  2. 2 tool updates
    • Changedget_ad1 field changed
      • changedInput schema / properties / key / description
        Previous value: -"adKey (\"meta:<id>\"), a bare id, a Meta Ad Library id or \"id:<internal id>\""New value: +"adKey (\"meta:<id>\"), a bare id or a Meta Ad Library id"
    • Changedget_swipe_prompt1 field changed
      • changedInput schema / properties / key / description
        Previous value: -"adKey (\"meta:<id>\"), a bare id, a Meta Ad Library id or \"id:<internal id>\""New value: +"adKey (\"meta:<id>\"), a bare id or a Meta Ad Library id"
  3. 6 tool updates
    • First observedadvertiser_hooks
    • First observedget_ad
    • First observedget_swipe_prompt
    • First observedlist_taxonomy
    • First observedsearch_ads
    • First observedwinning_patterns

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    See who is running ads in your space, clone a winning ad for your brand as an image or video, and launch it on Meta, Google, TikTok, X, or ChatGPT Ads. The full research, clone, launch loop from one chat in Claude, ChatGPT, or Cursor. Flat pricing, no fabricated metrics.
    47
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources