MCP tools reference (simple)
This is the plain-English version of the MCP tools list.
- MCP URL:
https://app.winninghunter.com/mcp - Full setup guide: Connect MCP
- All tools are read-only
- Successful
tools/calluses 1 API credit
Quick list (all 30 tools)
search_tiktok_products
search_tiktok_shops
search_tiktok_creators
search_tiktok_videos
count_tiktok_entities
browse_tiktok_categories
list_tiktok_category_top
autocomplete_tiktok
get_tiktok_product
get_tiktok_shop
get_tiktok_creator
get_tiktok_video
get_tiktok_trending_products
search_facebook_ads
find_winning_products
creative_inspiration_pack
brief_competitor
scan_ad
daily_radar
analyze_tracked_brand
list_tracked_brands
list_shopify_store_filter_options
search_shopify_stores
search_shops
find_similar_shops
find_similar_stores_by_image
search_exploding_topics
get_exploding_topic_detail
autocomplete_exploding_topics
check_credits
How to think about the tools
1) Find things
Use these first:
search_tiktok_productssearch_tiktok_shopssearch_tiktok_creatorssearch_tiktok_videossearch_facebook_adsfind_winning_productscreative_inspiration_packbrief_competitorscan_adsearch_shopify_storessearch_shopsfind_similar_shopsfind_similar_stores_by_imagesearch_exploding_topics
2) Open details
Use an ID from search results:
get_tiktok_productget_tiktok_shopget_tiktok_creatorget_tiktok_videoget_exploding_topic_detail
3) Helpers
count_tiktok_entities(counts by entity)browse_tiktok_categories(category tree and views)list_tiktok_category_top(top items in one category)autocomplete_tiktok(typeahead suggestions)autocomplete_exploding_topics(topic suggestions)get_tiktok_trending_products(TikTok Shop trending)daily_radar(tracked-brand changes)analyze_tracked_brand(single-brand deep dive)list_shopify_store_filter_options(valid Store Explorer filter values, including dynamic themes/apps/taxonomy)check_credits(remaining API credits)
Most common arguments
Most search tools use these:
keywordcountrypagesizesort_bysort_order
For Meta ad tools, page is 1-based in MCP (1 = first page), even though the dashboard backend uses 0-based indexing internally.
sort_order is asc or desc (default desc) on every tool that accepts it.
Most detail tools use:
idslice(which part you want)
Allowed sort_by per tool
Pass any string from the table below. Common aliases are normalized automatically (case-insensitive). Anything else falls back to the default sort and the response includes a mcp_sorting block describing what was applied.
Meta ad library
| Tool | Default | Allowed sort_by |
|---|---|---|
search_facebook_ads |
relevance |
relevance, datefound, lastseen, adspend, longestrunning, reach, adsetamount, consistency, monthlyvisits, pageactiveads, toprank (sort by ad_rank ascending: rank #1 before #5; use for “top ad from [brand]”; MCP forces sort_order asc) |
find_winning_products |
relevance |
same as search_facebook_ads |
Aliases: created / created_at / date / recent / newest / latest → datefound; last_ad_started → lastseen; first_ad_started / oldest / earliest → datefound (ascending); active_ads → pageactiveads; monthly_visits → monthlyvisits. For within-brand ad_rank (“top ad from [brand]”), use toprank or aliases rank, ranking, ad_rank, top_ad, best_ranked, best_ad, adrank, topad, …; spaced phrases like top rank / top ad normalize to toprank. sort_order is ignored for toprank (always ascending rank).
searchkeyword (field scope for keyword on Meta tools): All (default), landingurl, pagename, adtext, productname. This is not a niche/category field; aliases like landing_url, page_name, ad_text, product are normalized too. If an agent mistakenly sends a niche/category term as searchkeyword with no keyword / niche (for example searchkeyword: "Fashion"), the MCP tool recovers it as the matching niche (CG) instead of failing schema validation.
For Meta vertical/category searches, use niche or niches instead of keyword-only filtering. Treat user wording like “category”, “niche”, “vertical”, “market”, or “product category” as a request for this Meta niche filter. The MCP input schema exposes the dashboard niche codes as an enum, so a fashion query should be sent as niche=CG (Fashion & Clothing). Useful fashion-ad refinements are WC = Women's Clothing, MC = Men's Clothing, FW = Footwear / Shoes, BG = Bags, JY = Jewellery, WT = Watches, and SG = Sunglasses. The runtime also accepts dashboard names like Fashion & Clothing; invalid values return allowed_niches instead of being passed through.
rank_growth_filter is also validated against the dashboard options: comma-separated rising, stable, declining.
Other Meta dashboard filters are exposed as MCP args and validated before calling /api/fb-ads: countries / exclude_countries, technology / technologies, language / languages / exclude_languages, apps / exclude_apps, theme / themes, scaling, media_type, page_type, ad_score, low_impressions, range filters (min_* / max_* for duplicates, active ads, ad spend, reach, monthly visits, products on store, price, copy length, video length, days running), and date ranges (ad_created_*, last_seen_*, product_created_*, page_created_*). Theme names must be exact dashboard Themes values; apps accept dashboard app ids or app names. Date ranges require both *_from and *_to in YYYY-MM-DD.
TikTok Shop
All TikTok Shop search tools default to sort_by=revenue. Allowed values match the dashboard's sortable columns.
| Tool | Allowed sort_by |
|---|---|
search_tiktok_products |
revenue, name, revenue_30_days, sold_count, avg_unit_price, commission_rate, creator_count, first_seen, creator_conversion_ratio, revenue_growth_rate, sales_growth_rate, product_score, product_rating, product_review_cnt |
search_tiktok_shops |
revenue, shop_name, revenue_30_days, sold_count, product_count, shop_rating, revenue_growth_rate, sales_growth_rate, video_count, avg_unit_price |
search_tiktok_creators |
revenue, name, revenue_30_days, followers, followers_lifetime, followers_growth_rate, video_count, revenue_growth_rate, views_growth_rate, product_count |
search_tiktok_videos |
revenue, name, revenue_30_days, views_30_days, likes_30_days, gpm, ad_spend, ad2_cost, ad2_roas, estimated_roas, publish_date, revenue_growth_rate, views_growth_rate, likes_growth_rate, shares_growth_rate, video_duration, comments, saves |
For list_tiktok_category_top, get_tiktok_product (creators / videos slices), get_tiktok_shop (products / videos / creators slices), get_tiktok_creator (shops / products / videos slices), and get_tiktok_video (similar slice), the sort_field arg uses the matching entity's allow-list above.
Aliases auto-normalized across TikTok Shop tools: units_sold / units / sales / sold → sold_count; gmv → revenue; gmv_30d / revenue_30d → revenue_30_days; growth / revenue_growth / gmv_growth_rate → revenue_growth_rate; sales_growth → sales_growth_rate; price / avg_price → avg_unit_price; rating → shop_rating; reviews → product_review_cnt; followers_count → followers; views → views_30_days; likes → likes_30_days; roas → estimated_roas; duration → video_duration; date / published → publish_date.
Shopify Explore Shops
| Tool | Default | Allowed sort_by |
|---|---|---|
search_shopify_stores, search_shops |
monthly_visits |
monthly_visits, 30d_rev_estimated_max, 1d_rev_estimated_max, revenue_1y, aov, visits_growth_pct_m1, visits_growth_pct_m3 |
find_similar_stores_by_image |
monthly_visits |
same as search_shopify_stores |
Aliases: revenue / monthly_revenue / revenue_30d / 30d_revenue → 30d_rev_estimated_max; annual_revenue / yearly_revenue → revenue_1y; daily_revenue / revenue_1d → 1d_rev_estimated_max; traffic / visits / visitors / monthly_traffic → monthly_visits; avg_order_value / average_order_value / order_value → aov; traffic_growth_1m → visits_growth_pct_m1; traffic_growth_3m → visits_growth_pct_m3; revenue_change / revenue_momentum / store_revenue_change_30d → visits_growth_pct_m1 (same mapping as the live Explore Shops table when legacy revenue-delta sort was retired).
search_shopify_stores / search_shops filters (all optional unless noted). Names mirror MCP argument names:
Use list_shopify_store_filter_options before filtering by dynamic values (shopify_themes, store_apps, product_taxonomy_l1/l2/l3). Its section argument accepts all, static, themes, apps, product_taxonomy_l1, product_taxonomy_l2, product_taxonomy_l3; pass query to search dynamic option lists.
Intent playbook: “Stores in a niche” → category or niche = one of the Explore Shops verticals. For fashion/clothing/apparel, use Clothing. Avoid keyword-only niche queries. “Top / biggest by revenue” → sort_by=revenue_1y, sort_order=desc. “New in last N months” → store_created_from / store_created_to inclusive YYYY-MM-DD (both required).
Parity with POST https://app.winninghunter.com/api/shops/explore: MCP uses the same server-side POST keys (search, category, sortingKey, sortingDirection, page, pageSize, includeWlads, …). Argument mapping: keyword→search, sort_by→sortingKey, size→pageSize. Default include_wlads=false → includeWlads=0 (matches the dashboard table request that skips wlads previews).
| Argument(s) | Meaning |
|---|---|
keyword |
Full-text search (name, domain, category, descriptions, products/bestsellers). |
country |
Merchant/store registered country, not visitor traffic. Allowed: US, GB, CA, AU, DE, FR, NL, IN, BR, IT, ES, SE, CN, JP, HK, CH, BE, AE, AT, NZ, SG, IE, DK, NO, PT, PL, MX, KR, IL, ZA, SA, MY, TH, PH, ID, NG, PK, MA, CO, AR, FI, CZ, RO, GR, HU. |
currency |
Store currency. Allowed: USD, EUR, GBP, CAD, SEK, DKK, TRY, NOK, CHF, AUD, NZD, HKD, MXN, BRL, INR. |
category, niche |
Same Explore Shops vertical (niche is an alias if you omit category). Only these values match the vertical filter: Clothing, Arts & Crafts, Accessories, Beauty, Health, Toys & Games, Electronics, Pet Supplies, Other (server matches case-insensitively). Prefer over keyword alone for “stores in [vertical]”. |
product_taxonomy_l1, product_taxonomy_l2, product_taxonomy_l3 |
Optional finer product taxonomy refinements. These are not the main vertical filter; use category / niche for verticals. Discover valid values with list_shopify_store_filter_options. |
visitor_country_main, visitor_country_among, visitor_country_exclude |
Visitor/traffic mix from SimilarWeb-style top countries: comma/semicolon ISO2 lists; main = tied top share; among = has meaningful share; exclude = must not appear (same code in multiple lists → exclude wins). Invalid country-code strings return invalid_argument. |
min_revenue, max_revenue, min_annual_revenue, max_annual_revenue |
Estimated revenue band (monthly USD or annual converted to monthly bounds server-side). |
aov_min, aov_max |
Average product price / AOV range (non-negative). |
monthly_visits_min, monthly_visits_max |
Monthly visits band (integers ≥ 0). Dashboard presets: 0-5000, 5000-10000, 10000-50000, 10000-150000, 10000-100000000, 50000-100000, 0-150000, 100000-1000000, 1000000-100000000, 3000000-100000000. |
product_count_min, product_count_max |
Published product count band (integers ≥ 0). Dashboard presets: 1-10, 10-50, 50-200, 200-1000, 1000-100000. |
language |
Exact match on store language. Allowed: en, fr, de, es, it, pt, nl, sv, da, no, pl, ja, ko, zh, ar, tr, ru, he, th. |
store_apps |
Substring match against installed Shopify app names (≤128 chars). Discover valid names with list_shopify_store_filter_options(section=apps). |
revenue_change_pct_min, revenue_change_pct_max |
30d revenue momentum filter (store_revenue_change_30d); both bounds must be ≥ 0 (dash-range encoding limitation). |
trustpilot_rating_min, trustpilot_rating_max |
Trustpilot stars (0–5). Dashboard presets: 1-2, 2.5-3.5, 4-5. |
trustpilot_reviews_min, trustpilot_reviews_max |
Trustpilot review count band (integers ≥ 0). Dashboard presets: 1-1000, 1000-10000, 10000-100000, 100000-100000000. |
traffic_growth_rules_json |
JSON array of rules AND‑ed together: { "months": 1 | 3, "direction": "growth" | "loss", "percentage": number, "maxPercentage": number | null } (matches Explore Shops Traffic Growth UI). |
store_created_from, store_created_to |
Inclusive calendar window YYYY-MM-DD (both required). Filters indexed first_product_date (first catalog signal). Does not filter Shopify metadata.created_at (shop provision / replatform). Successful responses include mcp_sorting with the applied sort and allow-list. |
include_wlads |
Default false: includeWlads=0 in POST (same as dashboard Explore table — no per-store explore_wlads_ads Meta preview hydration). Set true for previews (includeWlads=1). |
shopify_themes |
Comma/semicolon-separated theme names, or JSON string array (each 1–128 chars). Discover current theme names with list_shopify_store_filter_options(section=themes). Invalid/empty theme payloads return invalid_argument. |
page, size, sort_by, sort_order |
Pagination and sort. page must be ≥ 1; size must be 1–50; sort_order must be asc or desc. |
find_similar_stores_by_image takes image_url (required) plus the same filters as above except keyword (similarity replaces text search).
Note: TikTok MCP tools also use a country argument — there it is marketplace/country context, not the same field as Shopify merchant country.
Brand tracker
| Tool | Default | Allowed sort |
|---|---|---|
list_tracked_brands |
date_added |
date_added, name, new_ads, growth |
Aliases: recent / added / newest / latest / date → date_added; alphabetical / alpha / a-z → name; new / newads → new_ads; trending / momentum → growth.
Exploding Topics
| Tool | Default | Allowed sorting |
Allowed timeframe |
|---|---|---|---|
search_exploding_topics |
(dashboard preselects exponent) |
default, growth, gradient, exponent, absolute_volume, date_added |
default (all time), 3, 6, 12, 24 (months) |
Aliases for sorting: volume → absolute_volume; exponential → exponent; recent / newest / latest → date_added; trending → growth. category accepts dashboard slugs (e.g. fashion, beauty, skincare, fitness, technology, ai, …) or default for all categories.
mcp_sorting response block
Every search/list tool that accepts sort_by (or sort/sorting) attaches an mcp_sorting object to the response payload:
{
"mcp_sorting": {
"requested_sort_by": "revenue_30d",
"applied_sort_by": "revenue_30_days",
"applied_sort_order": "desc",
"allowed_sort_by": ["revenue", "name", "revenue_30_days", "..."],
"normalized_from": "revenue_30d"
}
}
If you pass an unknown sort key, mcp_sorting.warning says it fell back to the default — the tool does not error out.
Slice values for detail tools
Use one of these slice values:
get_tiktok_product:detail,history,metrics,creators,videosget_tiktok_shop:detail,history,metrics,products,videos,creators,strategyget_tiktok_creator:detail,history,metrics,shops,products,videosget_tiktok_video:detail,history,metrics,products,similar
Two easy mistakes
-
Trending confusion
get_tiktok_trending_productsis TikTok Shop product momentum- Exploding Topics is separate (
search_exploding_topics+get_exploding_topic_detail)
-
Write actions
- MCP is read-only
- Favorites, presets, transcripts, and other writes must use REST API
Copy block for AI instructions
Paste this into agent instructions:
Use WinningHunter MCP at https://app.winninghunter.com/mcp.
Auth can be either OAuth bearer token (connector flow) or X-API-Key (header-capable clients).
All MCP tools are read-only.
Successful tools/call costs 1 API credit.
If user asks for writes (favorites/presets/transcripts), use REST /api/v1/tiktok-shop/* instead.
When unsure about exact schema, call tools/list first.
Need the full technical detail?
For full filter semantics and endpoint behavior: