Skip to main content
Glama

Search ads

search_ads
Read-onlyIdempotent

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").

Input Schema

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)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema 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)"
  2. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources