MCPサーバー

Ad Radar

dev.ad-radar/ad-radar

このMCPでできること

Searches Meta ad library data, analyzes winning hooks and patterns, and generates swipe or analysis prompts for competitor ads.

advertiser_hooks
Advertiser hooks
The hooks, hook mechanisms and angles an advertiser uses most, aggregated over all of its ads: the pattern worth swiping, not a single ad. advertiserId comes from search_ads.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['advertiserId'], 'properties': {'advertiserId': {'type': 'integer'}}, 'additionalProperties': False}
get_ad
Ad details
Full record of one ad: headline, body, CTA, full transcript, metrics, media (public URLs), links (post, Ad Library, landing page, board). 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.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 80, 'description': 'adKey ("meta:<id>"), a bare id, a Meta Ad Library id or "id:<internal id>"'}}, 'additionalProperties': False}
get_swipe_prompt
Swipe prompt
A ready-to-run prompt for one ad. kind='swipe' = rebuild the ad for your product: map its beats, check the fit, write a full version with the same structure, plus alternative hooks. kind='analysis' = why the ad works (audience, funnel, psychology, weak spots) and how to apply it to your business. Pass product to fill it in, then follow the returned prompt.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 80, 'description': 'adKey ("meta:<id>"), a bare id, a Meta Ad Library id or "id:<internal id>"'}, 'kind': {'enum': ['swipe', 'analysis'], 'type': 'string', 'default': 'swipe'}, 'niche': {'type': 'string', 'maxLength': 300, 'description': 'Angle or audience to lean into (swipe only)'}, 'product': {'type': 'string', 'maxLength': 500, 'description': 'Your product, the one the prompt is for'}, 'annotate': {'type': 'boolean', 'default': True, 'description': 'Mark the copy blocks inside the script when available (swipe only)'}}, 'additionalProperties': False}
list_taxonomy
Taxonomy
The board's taxonomy dimensions (awareness, angle, hook_pattern, vformat, pformat, landing...) with their valid values: the slugs to use in the tags filter of search_ads.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
search_ads
Search ads
Search the Ad Radar board: competitor ads from the Meta Ad Library, with the same filters as the board. By default only ACTIVE ads, sorted by score. Returns compact rows with an adKey: call get_ad for the full record and get_swipe_prompt for a ready-to-run prompt. Call list_taxonomy first for valid tag values. headline and body can be null when the ad's text isn't available: use the tags to understand it. spendEstimate is an ESTIMATE based on engagement, not real spend.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 200, 'minimum': 1}, 'sort': {'enum': ['score', 'reactions', 'rpd', 'days', 'recent'], 'type': 'string', 'default': 'score'}, 'tags': {'type': 'object', 'description': 'Taxonomy filters: { "<dimension>": ["slug", ...] }. Different dimensions are ANDed, slugs within one are ORed', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'tier': {'enum': ['winner', 'rising'], 'type': 'string', 'description': 'winner = top 10% by score and running 21+ days; rising = growing. Every ad on the radar has at least $50k estimated spend'}, 'limit': {'type': 'integer', 'default': 15, 'maximum': 50, 'minimum': 1}, 'media': {'enum': ['video', 'image', 'all'], 'type': 'string', 'default': 'all'}, 'query': {'type': 'string', 'maxLength': 300, 'description': 'Free text over headline, body, advertiser name and transcript'}, 'minDays': {'type': 'integer', 'minimum': 0, 'description': 'Minimum days running'}, 'categories': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Advertiser vertical, e.g. health, pet'}, 'advertiserId': {'type': 'integer'}, 'includePastWinners': {'type': 'boolean', 'default': False, 'description': 'Also include winners that are no longer running (archive)'}}, 'additionalProperties': False}
winning_patterns
Winning patterns
The 'What to do now' block of the analytics page: for each taxonomy value, how many times more often it produces winners than average (lift), with adoption (ads, advertisers) and example ads. doThis = above average, lower = below.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'format': {'enum': ['all', 'video', 'image'], 'type': 'string', 'default': 'all'}}, 'additionalProperties': False}
追加
winning_patterns
2026年10月5日2:40
追加
advertiser_hooks
2026年10月5日2:40
追加
list_taxonomy
2026年10月5日2:40
追加
get_swipe_prompt
2026年10月5日2:40
追加
get_ad
2026年10月5日2:40
追加
search_ads
2026年10月5日2:40