{"apiVersion":"v1","directorySlug":"ugcs-mcp-7cc322c0a7","title":"Doomscroll","description":"Doomscroll is an AI content strategist that researches high-performing TikTok videos for every brand audience and turns useful patterns into original scripts.","pageUrl":"https://www.mcpbundles.com/skills/ugcs-mcp-7cc322c0a7","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.ugcs.farm/mcp","hostedMcpUrl":null,"toolCount":109,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"farm.ugcs/ugcs-mcp-7cc322c0a7","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"start_full_report_slow_expensive","description":"🚨 DO NOT USE unless the user LITERALLY types the words\n\"full report\", \"generate a report\", \"run a report\", or \"give me the dashboard\".","inputSchema":{"type":"object","required":["website_url"],"properties":{"website_url":{"type":"string"}}},"logicalName":"start_full_report_slow_expensive","displayName":"start_full_report_slow_expensive","title":"start_full_report_slow_expensive","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report_status","description":"Poll a report. Returns only status / current_step / progress / error —\nno heavy data. Use targeted tools to pull specific analysis sections once\n``status == 'completed'``.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_report_status","displayName":"get_report_status","title":"get_report_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_reports","description":"List recent reports (id, brand, status, timestamp). Cheap discovery.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20}}},"logicalName":"list_reports","displayName":"list_reports","title":"list_reports","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report_warnings","description":"Return the report's warning list (partial sources, LLM failures, etc.).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_report_warnings","displayName":"get_report_warnings","title":"get_report_warnings","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_hero","description":"Short overview: brand name, one-line diagnosis, overall confidence,\nsample-size summary. This is the \"read the whole report in 10 seconds\" view.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_hero","displayName":"get_hero","title":"get_hero","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_brand_profile","description":"Brand name / category / product summary / social handles / claims.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_brand_profile","displayName":"get_brand_profile","title":"get_brand_profile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_diagnosis","description":"The executive creative diagnosis (dominant pattern, biggest opportunity,\nrecommended strategy).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_diagnosis","displayName":"get_diagnosis","title":"get_diagnosis","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_next_moves","description":"Top 3 recommended creative moves (title, action, why, linked pattern).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_next_moves","displayName":"get_next_moves","title":"get_next_moves","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_confidence_breakdown","description":"Overall confidence score + what increased it + what reduced it.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_confidence_breakdown","displayName":"get_confidence_breakdown","title":"get_confidence_breakdown","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_patterns","description":"List repeated creative patterns. Filter by ``bucket``:\n``conversion_first`` or ``awareness_consideration``. Each entry is a summary\n(pattern_name, frequency, competitors, evidence_strength) — use\n``get_pattern`` for full detail.","inputSchema":{"type":"object","required":["report_id"],"properties":{"limit":{"type":"integer","default":12},"bucket":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"report_id":{"type":"string"}}},"logicalName":"list_patterns","displayName":"list_patterns","title":"list_patterns","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pattern","description":"Full detail for one repeated pattern (from ``list_patterns`` index) —\nincludes why-it-matters, why-it-can-perform, reel_formula, metric\nhypothesis, source_ids, observed / inferred / missing / validation.","inputSchema":{"type":"object","required":["report_id","index"],"properties":{"index":{"type":"integer"},"report_id":{"type":"string"}}},"logicalName":"get_pattern","displayName":"get_pattern","title":"get_pattern","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pattern_frequency","description":"The deterministic pattern-frequency table (pattern label, count,\ncompetitor count, dominant CTA + funnel + proof).","inputSchema":{"type":"object","required":["report_id"],"properties":{"limit":{"type":"integer","default":10},"report_id":{"type":"string"}}},"logicalName":"get_pattern_frequency","displayName":"get_pattern_frequency","title":"get_pattern_frequency","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_reel_formula","description":"Just the reel-formula beats (0-2s hook / 2-6s setup / …) for a pattern.","inputSchema":{"type":"object","required":["report_id","index"],"properties":{"index":{"type":"integer"},"report_id":{"type":"string"}}},"logicalName":"get_reel_formula","displayName":"get_reel_formula","title":"get_reel_formula","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_competitors","description":"Discovered competitors with social handles and relevance scores.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"list_competitors","displayName":"list_competitors","title":"list_competitors","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_competitor_matrix","description":"Competitor × pattern × CTA × proof style matrix with what-to-borrow notes.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_competitor_matrix","displayName":"get_competitor_matrix","title":"get_competitor_matrix","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_engagement_quality","description":"LLM-written engagement quality analysis (summary, purchase-intent\nevidence, recommended strategy).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_engagement_quality","displayName":"get_engagement_quality","title":"get_engagement_quality","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_engagement_signals","description":"Four signal cards: attention, commercial intent, objection, CTA clarity.\nEach is score + label + what_drove_it + examples + source_ids + next action.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_engagement_signals","displayName":"get_engagement_signals","title":"get_engagement_signals","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_intent_distribution","description":"Comment intent counts. ``tier`` filter: ``high`` / ``medium`` / ``low``.\nEach row has intent_type, count, pct, example_questions.","inputSchema":{"type":"object","required":["report_id"],"properties":{"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"report_id":{"type":"string"}}},"logicalName":"get_intent_distribution","displayName":"get_intent_distribution","title":"get_intent_distribution","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_top_signal_creatives","description":"Creatives that drew the most buying-intent comments. Each has\n``source_id`` so you can pull the full source detail with ``get_source``.","inputSchema":{"type":"object","required":["report_id"],"properties":{"limit":{"type":"integer","default":4},"report_id":{"type":"string"}}},"logicalName":"get_top_signal_creatives","displayName":"get_top_signal_creatives","title":"get_top_signal_creatives","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_cta_distribution","description":"CTA-type counts across the sample.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_cta_distribution","displayName":"get_cta_distribution","title":"get_cta_distribution","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_cta_funnel_analysis","description":"LLM-written CTA / funnel analysis with recommended strategy + gap.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_cta_funnel_analysis","displayName":"get_cta_funnel_analysis","title":"get_cta_funnel_analysis","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_creative_gaps","description":"Creative gaps the brand is missing vs. competitors, each with fix + asset.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_creative_gaps","displayName":"get_creative_gaps","title":"get_creative_gaps","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_sources","description":"Filtered slice of the scraped source registry.","inputSchema":{"type":"object","required":["report_id"],"properties":{"limit":{"type":"integer","default":25},"offset":{"type":"integer","default":0},"cta_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"report_id":{"type":"string"},"competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"list_sources","displayName":"list_sources","title":"list_sources","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_source","description":"Full detail for one source — caption, transcript, metrics, URL, thumbnail.","inputSchema":{"type":"object","required":["report_id","source_id"],"properties":{"report_id":{"type":"string"},"source_id":{"type":"string"}}},"logicalName":"get_source","displayName":"get_source","title":"get_source","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_source_transcript","description":"Just the transcript text of a source, if fetched. Returns\n``{transcript: str}`` or ``{transcript: null}`` if the creative wasn't in\nthe top-engagement slice that got transcribed.","inputSchema":{"type":"object","required":["report_id","source_id"],"properties":{"report_id":{"type":"string"},"source_id":{"type":"string"}}},"logicalName":"get_source_transcript","displayName":"get_source_transcript","title":"get_source_transcript","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_ad_packs","description":"Ad packs generated for the report — id, title, confidence, linked pattern.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"list_ad_packs","displayName":"list_ad_packs","title":"list_ad_packs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_summary","description":"Ad pack header: title, summary, why-this-ad, confidence, evidence bullets.","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_summary","displayName":"get_ad_pack_summary","title":"get_ad_pack_summary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_script","description":"Ad pack 30-second script + hook options.","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_script","displayName":"get_ad_pack_script","title":"get_ad_pack_script","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"plan_ad_generation","description":"Enter proactive planning mode before final ad/script generation.","inputSchema":{"type":"object","properties":{"goal":{"type":"string","default":"conversion"},"report_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"ad_pack_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"constraints":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"deliverable":{"type":"string","default":"ad ideas and scripts"},"brand_context":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"number_of_ads":{"type":"integer","default":3}}},"logicalName":"plan_ad_generation","displayName":"plan_ad_generation","title":"plan_ad_generation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_storyboard","description":"Ad pack storyboard scenes (timestamp / visual / dialogue / overlay / purpose).","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_storyboard","displayName":"get_ad_pack_storyboard","title":"get_ad_pack_storyboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_creator_brief","description":"Ad pack creator brief (persona, tone, setting, delivery notes, shots, avoid).","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_creator_brief","displayName":"get_ad_pack_creator_brief","title":"get_ad_pack_creator_brief","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_ai_prompt","description":"AI video-generation prompt + first-frame direction for an ad pack.","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_ai_prompt","displayName":"get_ad_pack_ai_prompt","title":"get_ad_pack_ai_prompt","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_test_plan","description":"Ad pack test plan: hypothesis, variable, metrics, success condition.","inputSchema":{"type":"object","required":["pack_id"],"properties":{"pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_test_plan","displayName":"get_ad_pack_test_plan","title":"get_ad_pack_test_plan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_test_plan","description":"Report-wide test plan (rows of hypothesis / variable / primary metric).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_test_plan","displayName":"get_test_plan","title":"get_test_plan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_seven_day_plan","description":"7-day content plan (day / reel concept / pattern / CTA / goal).","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_seven_day_plan","displayName":"get_seven_day_plan","title":"get_seven_day_plan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_data_quality","description":"Sample-size counts + known limitations of this report.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string"}}},"logicalName":"get_data_quality","displayName":"get_data_quality","title":"get_data_quality","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"crawl_website_text","description":"Fetch a website with a real-browser TLS fingerprint (bypasses Cloudflare)\nand return the visible text — cap at ``max_chars``. Zero API credits.","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string"},"max_chars":{"type":"integer","default":8000}}},"logicalName":"crawl_website_text","displayName":"crawl_website_text","title":"crawl_website_text","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"analyze_brand_from_url","description":"Crawl the site, then use Gemini to extract brand name, category,\nproduct summary, target audience, pain points, value props, and the\nbrand's own social handles. One LLM call, no ScrapeCreators credits.","inputSchema":{"type":"object","required":["website_url"],"properties":{"website_url":{"type":"string"},"user_description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"analyze_brand_from_url","displayName":"analyze_brand_from_url","title":"analyze_brand_from_url","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"discover_competitors_from_url","description":"Discover a brand's competitor set in ~5 seconds. Returns **both**\ndirect competitors (same category) and structural analogues (different\ncategory, same creative mechanic — e.g. Duolingo is a structural\nanalogue for a gamified math app; Liquid Death for a comedy-first\ngrooming brand).","inputSchema":{"type":"object","required":["website_url"],"properties":{"user_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"website_url":{"type":"string"},"user_description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"discover_competitors_from_url","displayName":"discover_competitors_from_url","title":"discover_competitors_from_url","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_structural_analogues","description":"Find brands in DIFFERENT categories whose creative playbook the\nuser's brand can steal. Use whenever the user says: \"find brands\nlike us but in other spaces\", \"brands with a similar mechanic\",\n\"who's running the same play in another vertical\", \"adjacent\ninspiration\", \"structural analogues\".","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":8},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"brand_description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"shared_mechanic_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"find_structural_analogues","displayName":"find_structural_analogues","title":"find_structural_analogues","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"scrape_tiktok_profile","description":"Return raw TikTok profile info for a handle. 1 credit.","inputSchema":{"type":"object","required":["handle"],"properties":{"handle":{"type":"string"}}},"logicalName":"scrape_tiktok_profile","displayName":"scrape_tiktok_profile","title":"scrape_tiktok_profile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"scrape_tiktok_videos","description":"Pull a TikTok account's recent organic videos with real view counts,\nlikes, comments, thumbnails, and captions — straight from TikTok's API.\nUse this to see what a competitor is posting and how it's performing.\nNarrate as \"pulling their real TikTok activity — views, engagement,\nthe actual creative\".","inputSchema":{"type":"object","required":["handle"],"properties":{"limit":{"type":"integer","default":20},"handle":{"type":"string"}}},"logicalName":"scrape_tiktok_videos","displayName":"scrape_tiktok_videos","title":"scrape_tiktok_videos","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_tiktok_keyword","description":"TikTok keyword search — returns normalized videos. 1 credit per page.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","default":20},"query":{"type":"string"}}},"logicalName":"search_tiktok_keyword","displayName":"search_tiktok_keyword","title":"search_tiktok_keyword","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_tiktok_hashtag","description":"TikTok hashtag search — returns normalized videos. 1 credit per page.","inputSchema":{"type":"object","required":["hashtag"],"properties":{"limit":{"type":"integer","default":20},"hashtag":{"type":"string"}}},"logicalName":"search_tiktok_hashtag","displayName":"search_tiktok_hashtag","title":"search_tiktok_hashtag","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fetch_tiktok_comments","description":"Fetch up to ``limit`` comments for a TikTok video URL, walking\npagination up to ``max_pages`` times. TikTok returns ~20 comments per\npage — each additional page costs 1 SC credit.","inputSchema":{"type":"object","required":["video_url"],"properties":{"limit":{"type":"integer","default":100},"max_pages":{"type":"integer","default":4},"video_url":{"type":"string"}}},"logicalName":"fetch_tiktok_comments","displayName":"fetch_tiktok_comments","title":"fetch_tiktok_comments","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fetch_tiktok_transcript","description":"Get the actual spoken audio transcript of a TikTok video. This is what\nmakes hook / voiceover / narrative analysis possible — we know exactly\nwhat they SAID, not just the caption. Narrate as \"listening to what\nthey actually say in the video\".","inputSchema":{"type":"object","required":["video_url"],"properties":{"video_url":{"type":"string"}}},"logicalName":"fetch_tiktok_transcript","displayName":"fetch_tiktok_transcript","title":"fetch_tiktok_transcript","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"scrape_instagram_reels","description":"Pull an Instagram account's recent Reels — captions, view counts,\nlikes, comments, thumbnails. Real engagement numbers, not estimates.\nNarrate as \"seeing what's actually landing on their Reels feed\".","inputSchema":{"type":"object","required":["handle"],"properties":{"limit":{"type":"integer","default":20},"handle":{"type":"string"}}},"logicalName":"scrape_instagram_reels","displayName":"scrape_instagram_reels","title":"scrape_instagram_reels","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"scrape_instagram_posts","description":"Fetch an Instagram account's recent grid posts. 1 credit.","inputSchema":{"type":"object","required":["handle"],"properties":{"limit":{"type":"integer","default":20},"handle":{"type":"string"}}},"logicalName":"scrape_instagram_posts","displayName":"scrape_instagram_posts","title":"scrape_instagram_posts","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_instagram_hashtag","description":"Instagram hashtag search — returns normalized posts. 1 credit per page.","inputSchema":{"type":"object","required":["hashtag"],"properties":{"limit":{"type":"integer","default":20},"hashtag":{"type":"string"}}},"logicalName":"search_instagram_hashtag","displayName":"search_instagram_hashtag","title":"search_instagram_hashtag","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_instagram_reels_query","description":"Search Instagram Reels by keyword with real pagination.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","default":30},"query":{"type":"string"},"max_pages":{"type":"integer","default":3}}},"logicalName":"search_instagram_reels_query","displayName":"search_instagram_reels_query","title":"search_instagram_reels_query","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fetch_instagram_comments","description":"Fetch Instagram post/reel comments, walking pagination up to\n``max_pages`` times. Each page costs 1 SC credit and typically\nreturns 10-30 top-level comments.","inputSchema":{"type":"object","required":["post_url"],"properties":{"limit":{"type":"integer","default":100},"post_url":{"type":"string"},"max_pages":{"type":"integer","default":4}}},"logicalName":"fetch_instagram_comments","displayName":"fetch_instagram_comments","title":"fetch_instagram_comments","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fetch_instagram_transcript","description":"Fetch Instagram Reel spoken transcript. Joins carousel pieces. 1 credit.","inputSchema":{"type":"object","required":["post_url"],"properties":{"post_url":{"type":"string"}}},"logicalName":"fetch_instagram_transcript","displayName":"fetch_instagram_transcript","title":"fetch_instagram_transcript","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_facebook_ads","description":"Keyword search across the Facebook Ad Library. 1 credit.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","default":30},"query":{"type":"string"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_active_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}}},"logicalName":"search_facebook_ads","displayName":"search_facebook_ads","title":"search_facebook_ads","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_tiktok_ads","description":"TikTok Ad Library search by keyword + region + period. ``period`` is\na lookback window in days sent upstream (\"7\" / \"30\" / \"90\" / \"180\"). 1\ncredit.","inputSchema":{"type":"object","required":["keyword"],"properties":{"limit":{"type":"integer","default":30},"period":{"type":"string","default":"30"},"region":{"type":"string","default":"US"},"keyword":{"type":"string"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_active_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}}},"logicalName":"search_tiktok_ads","displayName":"search_tiktok_ads","title":"search_tiktok_ads","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"scrape_google_ads_for_domain","description":"Fetch a domain's ads from Google Ad Library. 1 credit.","inputSchema":{"type":"object","required":["domain"],"properties":{"limit":{"type":"integer","default":30},"domain":{"type":"string"},"region":{"type":"string","default":"US"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_active_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}}},"logicalName":"scrape_google_ads_for_domain","displayName":"scrape_google_ads_for_domain","title":"scrape_google_ads_for_domain","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"classify_comment_intent","description":"Read a single comment and tell us whether it's a **buying signal**\n(purchase intent, price question, availability, product-fit, social\nproof) vs pure attention (generic likes, entertainment reactions).\nThis is the classifier that lets us separate 10,000 views' worth of\nnoise from the 3 comments that actually indicate revenue.\nNarrate as \"checking whether this comment is a buying signal or just noise\".","inputSchema":{"type":"object","required":["comment_text"],"properties":{"comment_text":{"type":"string"},"brand_profile":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"default":null}}},"logicalName":"classify_comment_intent","displayName":"classify_comment_intent","title":"classify_comment_intent","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"extract_creative_cta","description":"LLM: given a creative's caption + transcript, return the CTA structure —\nexplicit_button_cta, caption_cta, spoken_cta, implied_cta, cta_type,\nfunnel_stage, cta_strength, confidence. Zero SC credits.","inputSchema":{"type":"object","properties":{"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"platform":{"type":"string","default":"tiktok"},"transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"extract_creative_cta","displayName":"extract_creative_cta","title":"extract_creative_cta","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_cta_benchmark","description":"Aggregate real Meta button CTAs across every Facebook ad we've scraped\ninto the DB and rank them by longevity. ``active_days`` is the strongest\npublic proxy for CTA performance — brands don't keep losing ads running.","inputSchema":{"type":"object","properties":{"account_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":3}}},"logicalName":"get_cta_benchmark","displayName":"get_cta_benchmark","title":"get_cta_benchmark","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_proof_grade_sources","description":"Return only the highest-signal sources from a report — the \"proof-grade\"\nones that should back a recommendation. Filters noise (unrelated posts,\nweak-engagement one-offs, sources with no detected pattern) and scores\nwhat's left against the winning pattern.","inputSchema":{"type":"object","required":["report_id"],"properties":{"limit":{"type":"integer","default":15},"cta_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"hook_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"report_id":{"type":"string"},"format_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_relevance_score":{"type":"number","default":0.6}}},"logicalName":"find_proof_grade_sources","displayName":"find_proof_grade_sources","title":"find_proof_grade_sources","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"rank_creative_patterns","description":"Re-rank the report's creative patterns for a specific business goal.","inputSchema":{"type":"object","required":["report_id"],"properties":{"goal":{"type":"string","default":"conversion"},"limit":{"type":"integer","default":8},"report_id":{"type":"string"}}},"logicalName":"rank_creative_patterns","displayName":"rank_creative_patterns","title":"rank_creative_patterns","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"explain_why_pattern_matters","description":"Return the observed → inferred → why-it-matters → missing-evidence →\nvalidation-plan breakdown for one specific pattern. This is the tool that\nkeeps recommendations honest: it separates what we've actually seen from\nwhat we're inferring, and tells the user what to test to close the gap.","inputSchema":{"type":"object","required":["report_id","hook_type","format_type"],"properties":{"cta_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"hook_type":{"type":"string"},"report_id":{"type":"string"},"format_type":{"type":"string"}}},"logicalName":"explain_why_pattern_matters","displayName":"explain_why_pattern_matters","title":"explain_why_pattern_matters","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_ab_test_plan","description":"Generate a rigorous A/B test plan comparing a new pattern-backed ad-pack\nagainst the user's current baseline creative. LLM synthesises the\nhypothesis, variants, success conditions, kill criteria, and tracking\nrequirements from the stored ad-pack + your description of the baseline.","inputSchema":{"type":"object","required":["ad_pack_id","baseline_ad_description"],"properties":{"ad_pack_id":{"type":"string"},"primary_goal":{"type":"string","default":"CTR"},"baseline_ad_description":{"type":"string"}}},"logicalName":"create_ab_test_plan","displayName":"create_ab_test_plan","title":"create_ab_test_plan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_hook_benchmark","description":"Aggregate hook_type distribution across every creative pattern in the\nDB. Returns per-hook: ad_count, distinct_brands, paid_ad_count, average\nactive_days, sample brands, and example hooks.","inputSchema":{"type":"object","properties":{"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":3}}},"logicalName":"get_hook_benchmark","displayName":"get_hook_benchmark","title":"get_hook_benchmark","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_format_benchmark","description":"Same as ``get_hook_benchmark`` but for format_type\n(talking_head / product_demo / slideshow / listicle / testimonial /\nunboxing / etc.). Zero credits.","inputSchema":{"type":"object","properties":{"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":3}}},"logicalName":"get_format_benchmark","displayName":"get_format_benchmark","title":"get_format_benchmark","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_funnel_benchmark","description":"Aggregate funnel_stage distribution (TOFU / MOFU / BOFU) across\nscraped creatives. Tells you where the category is spending — is this\na discovery-heavy or conversion-heavy space? Zero credits.","inputSchema":{"type":"object","properties":{"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":3}}},"logicalName":"get_funnel_benchmark","displayName":"get_funnel_benchmark","title":"get_funnel_benchmark","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pattern_signature_benchmark","description":"Aggregate the full pattern signature (hook_type + format_type +\ncta_type) across the DB. This is the closest thing you have to a\n\"which combinations are working in DTC\" table. Zero credits.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":15},"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":2}}},"logicalName":"get_pattern_signature_benchmark","displayName":"get_pattern_signature_benchmark","title":"get_pattern_signature_benchmark","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"record_ad_pack_feedback","description":"Persist a user's reaction to an ad-pack. This is the raw material of\nthe learning loop — every recorded event feeds pattern-fit scoring\nlater.","inputSchema":{"type":"object","required":["ad_pack_id","action"],"properties":{"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"action":{"type":"string"},"rating":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"ad_pack_id":{"type":"string"}}},"logicalName":"record_ad_pack_feedback","displayName":"record_ad_pack_feedback","title":"record_ad_pack_feedback","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ad_pack_feedback","description":"List every recorded feedback event for one ad-pack + a summary of\nrating / action distribution. Useful when the LLM wants to check\nwhether a specific ad-pack has been validated in the past.","inputSchema":{"type":"object","required":["ad_pack_id"],"properties":{"ad_pack_id":{"type":"string"}}},"logicalName":"get_ad_pack_feedback","displayName":"get_ad_pack_feedback","title":"get_ad_pack_feedback","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_feedback_leaderboard","description":"Which ad-packs have received the most positive feedback across the\ncorpus? Ranks by (useful + launched + won) minus (not_useful + lost).\nThis is the seed of the \"learning loop\" — over time this signal tells\nthe LLM which pattern signatures the human user has validated.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":10}}},"logicalName":"get_feedback_leaderboard","displayName":"get_feedback_leaderboard","title":"get_feedback_leaderboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_usage_stats","description":"Summarize MCP usage over the last ``days`` days: session count,\nunique client versions, top tools called, and per-day request volume.\nAnonymous — no PII, no per-user identity. The ``client_name`` field\nis the MCP client software (Claude Desktop, Cursor, …) as reported\nduring the initialize handshake.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7}}},"logicalName":"get_usage_stats","displayName":"get_usage_stats","title":"get_usage_stats","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"preview_creative","description":"Render an inline preview card for a TikTok / Instagram creative in\nthe chat — the real thumbnail image plus caption and view/like/comment\nmetrics underneath.","inputSchema":{"type":"object","required":["creative_url"],"properties":{"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"creative_url":{"type":"string"}}},"logicalName":"preview_creative","displayName":"preview_creative","title":"preview_creative","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"render_creatives_preview","description":"Render a thumbnail grid from previously scraped creative rows.","inputSchema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":true}},"columns":{"type":"integer","default":4}}},"logicalName":"render_creatives_preview","displayName":"render_creatives_preview","title":"render_creatives_preview","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"render_creatives_grid","description":"Return an in-chat **grid image** of creator thumbnails — like a\nPinterest board of the videos worth studying. Each tile shows the\ncover frame + the account handle underneath.","inputSchema":{"type":"object","required":["creative_urls"],"properties":{"columns":{"type":"integer","default":4},"creative_urls":{"type":"array","items":{"type":"string"}}}},"logicalName":"render_creatives_grid","displayName":"render_creatives_grid","title":"render_creatives_grid","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"render_engagement_scorecard","description":"Return an in-chat **phone-mockup + colored metrics** card for one\ncreative. Left side: the video thumbnail framed like a phone screen\nwith a comment-count badge. Right side: colored metric lines —\nGREEN if ≥25% of comments are buying-oriented, AMBER if 10-25%, RED\nif <10% — plus the verdict and top intent categories.","inputSchema":{"type":"object","required":["creative_url"],"properties":{"creative_url":{"type":"string"},"brand_context":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"comment_limit":{"type":"integer","default":25}}},"logicalName":"render_engagement_scorecard","displayName":"render_engagement_scorecard","title":"render_engagement_scorecard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"preview_engagement_quality","description":"Render the engagement-quality analysis as an inline visual scorecard.","inputSchema":{"type":"object","required":["creative_url"],"properties":{"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"max_pages":{"type":"integer","default":4},"creative_url":{"type":"string"},"brand_context":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"comment_limit":{"type":"integer","default":30}}},"logicalName":"preview_engagement_quality","displayName":"preview_engagement_quality","title":"preview_engagement_quality","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"compare_creative_audiences","description":"Two creatives, one comparison. Ideal for \"same script, different\ncreators — which one landed with buyers?\". Runs\n``analyze_engagement_quality`` on both and picks a winner by\nhigh_signal_ratio (NOT raw comment count or views). Also flags when\nraw metrics and buying signal disagree, which is the whole point of\nthis analysis.","inputSchema":{"type":"object","required":["creative_url_a","creative_url_b"],"properties":{"max_pages":{"type":"integer","default":4},"brand_context":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"comment_limit":{"type":"integer","default":25},"creative_url_a":{"type":"string"},"creative_url_b":{"type":"string"}}},"logicalName":"compare_creative_audiences","displayName":"compare_creative_audiences","title":"compare_creative_audiences","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"analyze_creator_audience_fit","description":"Score whether a creator's audience is a real buying audience for\nthe given brand — independent of one specific creative. Pulls the\ncreator's recent posts, samples comments from each, and classifies\nevery comment. The output tells you whether their followers ask\nbuying questions in general or just react with generic hype.","inputSchema":{"type":"object","required":["handle","platform","brand_context"],"properties":{"handle":{"type":"string"},"platform":{"type":"string"},"sample_posts":{"type":"integer","default":3},"brand_context":{"type":"string"},"comments_per_post":{"type":"integer","default":20}}},"logicalName":"analyze_creator_audience_fit","displayName":"analyze_creator_audience_fit","title":"analyze_creator_audience_fit","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"compare_creators","description":"Score and rank a list of creators by audience buying orientation\nfor the given brand. Direct use case: picking who to partner with for\nUGC when you have 3-5 candidates with similar reach but very\ndifferent audience quality.","inputSchema":{"type":"object","required":["handles","platform","brand_context"],"properties":{"handles":{"type":"array","items":{"type":"string"}},"platform":{"type":"string"},"sample_posts":{"type":"integer","default":2},"brand_context":{"type":"string"},"comments_per_post":{"type":"integer","default":15}}},"logicalName":"compare_creators","displayName":"compare_creators","title":"compare_creators","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"backfill_embeddings","description":"Embed the next batch of scraped creatives that don't yet have a\n``kind`` embedding. Run this once per kind after you have new data,\nor opportunistically to top up. Idempotent — safe to run repeatedly.","inputSchema":{"type":"object","properties":{"kind":{"type":"string","default":"combined"},"limit":{"type":"integer","default":100}}},"logicalName":"backfill_embeddings","displayName":"backfill_embeddings","title":"backfill_embeddings","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_embedding_coverage","description":"Report how much of the corpus is indexed per embedding kind.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_embedding_coverage","displayName":"get_embedding_coverage","title":"get_embedding_coverage","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_similar_hooks","description":"Transcript-only similarity — best for finding creatives with a\nsimilar spoken hook or opening line, regardless of the surrounding\nformat. Requires the seed and index creatives to have transcripts.","inputSchema":{"type":"object","required":["seed"],"properties":{"seed":{"type":"string"},"top_k":{"type":"integer","default":10},"min_similarity":{"type":"number","default":0.5}}},"logicalName":"find_similar_hooks","displayName":"find_similar_hooks","title":"find_similar_hooks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_similar_patterns","description":"Cross-brand pattern retrieval — search over every embedded\nCreativePattern by an English description like *\"direct-benefit hook\nwith a product demo and a Shop Now CTA\"*. Returns creatives that\nmatch the described pattern regardless of exact keyword.","inputSchema":{"type":"object","required":["description"],"properties":{"top_k":{"type":"integer","default":10},"min_similarity":{"type":"number","default":0.5}}},"logicalName":"find_similar_patterns","displayName":"find_similar_patterns","title":"find_similar_patterns","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_visually_similar_creatives","description":"Visual-style similarity — uses the LLM-extracted ``visual_style`` +\n``first_three_seconds`` text from CreativePattern as the embedding\nsource. Not a CLIP-based visual match (we don't have image\nembeddings) — it's semantic similarity over the *description* of\nthe visual setup.","inputSchema":{"type":"object","required":["seed"],"properties":{"seed":{"type":"string"},"top_k":{"type":"integer","default":10},"min_similarity":{"type":"number","default":0.5}}},"logicalName":"find_visually_similar_creatives","displayName":"find_visually_similar_creatives","title":"find_visually_similar_creatives","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_creator_archetype_landscape","description":"Distribution of creator archetypes across every scraped creative,\ngrouped into meta-buckets (brand-led / expert / influencer / peer_ugc\n/ comedy / other). Each bucket reports:","inputSchema":{"type":"object","properties":{"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_sample_size":{"type":"integer","default":3}}},"logicalName":"get_creator_archetype_landscape","displayName":"get_creator_archetype_landscape","title":"get_creator_archetype_landscape","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_creators_by_archetype","description":"Return real ``account_handle``s in the DB filed under a given\narchetype (or bucket). Ranked by aggregate engagement.","inputSchema":{"type":"object","required":["archetype"],"properties":{"top_k":{"type":"integer","default":15},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"archetype":{"type":"string"},"min_views":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null},"caption_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"find_creators_by_archetype","displayName":"find_creators_by_archetype","title":"find_creators_by_archetype","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"recommend_creator_archetypes","description":"Prescriptive recommendation: given a brand description and a goal\n(conversion / awareness / engagement / lead_capture), rank the creator\narchetypes we should partner with and explain why. Grounded in real\nlandscape data from ``get_creator_archetype_landscape`` — not a\ngeneric LLM opinion.","inputSchema":{"type":"object","required":["brand_description"],"properties":{"goal":{"type":"string","default":"conversion"},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"brand_description":{"type":"string"}}},"logicalName":"recommend_creator_archetypes","displayName":"recommend_creator_archetypes","title":"recommend_creator_archetypes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"mine_top_objections","description":"The free cheat sheet in the comments. Use whenever the user asks:\n\"what are buyers worried about\", \"what objections are people raising\",\n\"what questions do people ask about {brand/category}\", \"what should\nour next ad address\".","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":12},"competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_cluster_size":{"type":"integer","default":2}}},"logicalName":"mine_top_objections","displayName":"mine_top_objections","title":"mine_top_objections","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_creative_gaps","description":"White-space analysis. Builds the (hook_type × format_type × cta_type)\ncube from every scraped pattern and returns cells with **fewer than**\n``min_competitor_threshold`` distinct brands. Those cells are angles\nthe category has left unclaimed.","inputSchema":{"type":"object","properties":{"top_gaps":{"type":"integer","default":10},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_competitor_threshold":{"type":"integer","default":2}}},"logicalName":"find_creative_gaps","displayName":"find_creative_gaps","title":"find_creative_gaps","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pattern_trends","description":"Time-window trend analysis. For a given pattern field (``hook_type``\n/ ``format_type`` / ``cta_type`` / ``funnel_stage``), bucket every\ncreative by its first_seen_at date into weekly / monthly windows and\nshow which values are **accelerating** vs **decaying** over the range.","inputSchema":{"type":"object","properties":{"field":{"type":"string","default":"hook_type"},"days_ago":{"type":"integer","default":90},"bucket_size":{"type":"string","default":"week"},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"get_pattern_trends","displayName":"get_pattern_trends","title":"get_pattern_trends","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"red_team_ad_pack","description":"Red-team an ad pack. LLM plays smart competitor: given this pack,\nwhat would they do to counter it? Where is it weak? What comment\nammunition would they use? Also cross-checks corpus for whether the\nsame pattern is already saturated (novelty score).","inputSchema":{"type":"object","required":["ad_pack_id"],"properties":{"ad_pack_id":{"type":"string"}}},"logicalName":"red_team_ad_pack","displayName":"red_team_ad_pack","title":"red_team_ad_pack","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"estimate_spend_intensity","description":"Deterministic spend-proxy score per brand. Combines:","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":15},"competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"estimate_spend_intensity","displayName":"estimate_spend_intensity","title":"estimate_spend_intensity","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_winning_opens","description":"Rank the ``first_three_seconds`` patterns that actually survive.","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":15},"min_active_days":{"type":"integer","default":21},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"get_winning_opens","displayName":"get_winning_opens","title":"get_winning_opens","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_message_mix","description":"LLM-classify a competitor's ads into message types and return the\nmix percentages. Every creative is classified as ``education`` /\n``product_demo`` / ``testimonial`` / ``offer_promo`` / ``story`` /\n``entertainment`` / ``problem_agitation`` — a Kotler-ish taxonomy for\nthe promise structure of the ad.","inputSchema":{"type":"object","required":["competitor"],"properties":{"limit":{"type":"integer","default":40},"competitor":{"type":"string"}}},"logicalName":"get_message_mix","displayName":"get_message_mix","title":"get_message_mix","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"analyze_landing_page","description":"Fetch a landing page and extract the marketing-relevant signals:","inputSchema":{"type":"object","required":["landing_url"],"properties":{"landing_url":{"type":"string"}}},"logicalName":"analyze_landing_page","displayName":"analyze_landing_page","title":"analyze_landing_page","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_country_deployment","description":"For a brand, check which countries they're currently running FB /\nIG ads in. Iterates through ``countries`` (default: US/GB/CA/AU/IN/DE)\nhitting the Facebook Ad Library once per country.","inputSchema":{"type":"object","required":["company_name"],"properties":{"countries":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"default":null},"company_name":{"type":"string"}}},"logicalName":"get_country_deployment","displayName":"get_country_deployment","title":"get_country_deployment","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"detect_creator_partnerships","description":"Find creators (non-brand handles) that show up repeatedly in the\ncorpus — proxy for paid partnerships / retainers.","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":20},"competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"min_appearances":{"type":"integer","default":2}}},"logicalName":"detect_creator_partnerships","displayName":"detect_creator_partnerships","title":"detect_creator_partnerships","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_shared_audio_detection","description":"Find TikTok / Instagram audio tracks used across multiple creatives.","inputSchema":{"type":"object","properties":{"top_k":{"type":"integer","default":20},"min_uses":{"type":"integer","default":2},"category_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}}},"logicalName":"get_shared_audio_detection","displayName":"get_shared_audio_detection","title":"get_shared_audio_detection","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deep_dive_on_creator","description":"Turn one creator handle into a full outreach dossier. Use whenever\nthe user says: \"tell me everything about {creator}\", \"should we\npartner with @X\", \"deep dive on this handle\", \"give me the full\npicture on {creator}\".","inputSchema":{"type":"object","required":["handle","platform"],"properties":{"handle":{"type":"string"},"platform":{"type":"string"},"brand_context":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"comments_per_post":{"type":"integer","default":20},"top_posts_to_score":{"type":"integer","default":3}}},"logicalName":"deep_dive_on_creator","displayName":"deep_dive_on_creator","title":"deep_dive_on_creator","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"discover_creators_from_brand_engagement","description":"Mine the brand's own top posts for creator leads. Use whenever the\nuser says: \"who's engaging with our brand\", \"find creators already\nin our audience\", \"surface people talking to us in the comments\",\n\"who are we tagged with / mentioned by\".","inputSchema":{"type":"object","required":["brand_handle","platform"],"properties":{"top_k":{"type":"integer","default":25},"platform":{"type":"string"},"brand_handle":{"type":"string"},"comments_per_post":{"type":"integer","default":40},"top_posts_to_mine":{"type":"integer","default":6}}},"logicalName":"discover_creators_from_brand_engagement","displayName":"discover_creators_from_brand_engagement","title":"discover_creators_from_brand_engagement","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"expand_discovery_via_content_graph","description":"Take a small set of seed creatives and expand outward via their\naudio + hashtags to find MORE creators in the same category. Use\nwhenever the user says: \"find more like these\", \"expand this list\",\n\"who else is riding these sounds/tags\".","inputSchema":{"type":"object","required":["seed_urls"],"properties":{"seed_urls":{"type":"array","items":{"type":"string"}},"total_top_k":{"type":"integer","default":30},"include_music":{"type":"boolean","default":true},"per_angle_limit":{"type":"integer","default":12},"include_hashtags":{"type":"boolean","default":true}}},"logicalName":"expand_discovery_via_content_graph","displayName":"expand_discovery_via_content_graph","title":"expand_discovery_via_content_graph","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Doomscroll&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AudWdjcy5mYXJtL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Doomscroll%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.ugcs.farm%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Doomscroll%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.ugcs.farm%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Doomscroll&connectorUrl=https%3A%2F%2Fmcp.ugcs.farm%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Doomscroll\" --url \"https://mcp.ugcs.farm/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ugcs-mcp-7cc322c0a7","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ugcs-mcp-7cc322c0a7/tools/{tool}","mcpServerUrl":"https://mcp.ugcs.farm/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ugcs-mcp-7cc322c0a7?live=1"}