Reference
MCP tools
60 tools. Playbooks for VC, competitor, dropship, merch, outreach — then catalog wrappers.
60 tools. Prefer the Playbooks / VC / Competitor / Dropship / Outreach groups. Raw wrappers are still there when you need one field.
whoami — this key's plan, usedToday, remainingToday, rate limit, expiry, and whether Signals is enabled. Does not meter. Same facts as GET /v1/whoami. Ask Cursor “what's my quota?”
limit is 1–100 unless noted. Lists use offset. Stop when hasMore is false. Search or resolve before inventing a domain.
| Tool | Args | Does | |
|---|---|---|---|
whoami | — | Plan, used today, remaining quota, expiry. Does not meter. Ask “what's my quota?” | |
upgrade | — | Checkout URL when trial ends or daily quota is 0. Not metered. Show the URL - do not invent one. | |
list_playbooks | — | Composed-tool map: VC, competitor, dropship, outreach. | |
get_examples | — | Alias of list_playbooks. | |
brief_market | vertical, countryCode, minVisits | TAM: verticals, geos, movers, optional filtered cohort. | |
cohort_tam | filters, groupBy, groupMetric | Filtered catalog rolled up. Not unfiltered countries TAM. | |
find_peers | domain, limit | Same vertical + country + visit band, then compare. | |
diligence_pack | domain | IC memo: growth, traffic, stack roles, bestsellers, changes, contacts. | |
compare_stacks | domains[2–8] | Shared vs exclusive apps, tagged by role. | |
competitor_moves | domain, since | Store/SKU changes + vertical movers + signal insights if watched. Then create_signal. | |
overlap_vendors | domainA, domainB, limit | Shared vendors and average price gap. | |
niche_research | q, market?, limit? | Semantic product-idea search + saturation report + stores that sell the top hit. | |
search_product_ideas | q, market, priceMin, priceMax, trending, countries, region | Product names/categories → ideas with seller count and UNTAPPED→SATURATED verdict. | |
suggest_product_ideas | q, limit | Autocomplete for product-idea search. | |
trending_product_ideas | — | Product ideas that are heating up. | |
get_product_research | id | Saturation report for one idea. Copy id from search_product_ideas. | |
list_product_sellers | id, sort, page, limit | Stores selling that idea. sort=traffic | price. |
screen_dropship | vertical, countryCode, minVisits, priceMax, limit | Dropship-flagged stores + cheapest SKUs. | |
source_map | q, vendor, productType, storeVertical, priceMax | Vendor → store count + price min/max. | |
winning_skus | storeVertical or storeDomain, since | Bestsellers, ≥10% markdowns, new products. | |
product_search | q, storeDomain, vendor, productType, tag, storeVertical, isBestSeller, priceMin, priceMax, sort, order, limit | SKU search + facets (vendors, types, stores, price). | |
product_intel | domain+handle or q | One SKU memo: price vs compare-at, store, SKU history, bestsellers. | |
change_tracker | domain, since, limit | Unified + all product change types + store change types + signal SKUs. | |
price_watch | storeDomain, productType, since, minPriceChangePct | Markdowns and hikes. Default min 10%. | |
assortment_watch | storeDomain, productType, since | New / removed / bestseller enter / exit. | |
get_contacts | domain or q | Emails + social URLs + ESP/support tells. No phone/owner. | |
find_outreach | vertical, countryCode, appSlug, minVisits, limit≤10 | Hydrate stores; keep rows with email or social. | |
resolve_store | q | Brand or URL → up to 5 candidates. One hit → full store card. | |
get_upstream_health | — | Catalog health JSON. | |
search_stores | q, vertical, category, industry, countryCode, isDropshipper, appSlug, min/max visits & revenue, minRating, groupBy, groupBy2, groupMetric, sort, order, limit, offset | Filter the catalog, or groupBy into tables (not store rows). | |
get_store | domain | One merchant card: traffic, modeled revenue, rating, apps, socials. | |
compare_stores | domains[2–8] | Side-by-side cards. Missing domains in notFound. | |
get_store_traffic | domain, limit≤120 | Monthly visits + channel mix. | |
get_store_products | domain, q, isBestSeller, vendor, productType, tag, priceMin, priceMax, sort, order, limit, offset | SKUs for one merchant. | |
get_store_apps | domain | Detected Shopify app stack. | |
get_store_history | domain, limit≤365 | Daily snapshots: visits, revenue band, rating, product counts. | |
get_store_changes | domain, changeType, since, limit, offset | Diffs: revenue, visits, products, rating, apps. | |
search_products | q, storeDomain, vendor, productType, tag, storeVertical, isBestSeller, priceMin, priceMax, sort, order, limit, offset | Cross-store SKU search. At least one filter required. | |
get_product | domain, handle | One SKU by Shopify handle. | |
get_product_changes | storeDomain, changeType, productType, since, minPriceChangePct, limit, offset | Price / new / removed / position / bestseller moves. | |
get_changes | entity, domain, since, limit | Unified store + product movement feed. | |
search_apps | q, category, pricingType, minRating, builtForShopify, sort, order, limit, offset | Shopify App Store catalog. | |
get_app | slug | One app + install-base sample. | |
get_app_stores | slug, limit, offset | Merchants observed running that app, by visits. | |
get_analytics_overview | — | Coverage counts, averages, top verticals and countries. | |
get_verticals | countryCode, limit | Market size by vertical. | |
get_countries | vertical, limit | Unfiltered geo TAM. Filtered cohort → search_stores groupBy=country. | |
get_movers | metric, direction, vertical, countryCode, since, minPct, limit | Stores growing or shrinking. Defaults: metric/direction any, minPct 5. | |
create_signal | domain, autoTrack? | Paid only (trial 403). Create an EcomScout watch on this Neonjelly key. Tight cap. No probe. | |
list_signals | limit, offset | Paid only (trial 403). Watches stored on this key. Then GET a domain already on Signals. | |
get_signal | id | Paid only (trial 403). One signal card. id = Mongo id or domain. | |
get_signal_stats | id | Paid only (trial 403). Totals + store profile if already watched. | |
get_signal_sales | id, from, to | Paid only (trial 403). Daily units + variants. Needs ≥2 inventory snapshots. | |
get_signal_inventory | id | Paid only (trial 403). Stock timeline. | |
get_signal_social | id | Paid only (trial 403). Follower snapshots. | |
get_signal_ads | id, slice, days | Paid only (trial 403). Ad library. slice: overview (default), ads, correlation, revenue, product-impact, timeline, events. | |
get_signal_apps | id, changes? | Paid only (trial 403). Apps on a tracked store. changes=true → /apps/changes. | |
get_signal_product_changes | id | Paid only (trial 403). Product movements on a tracked store. | |
get_signal_insights | id | Paid only (trial 403). Per-signal insight feed. | |
list_signal_insights | limit, offset | Paid only (trial 403). Account-wide insights. Empty unless the key owns watches. Prefer get_signal_insights + domain. |
Signals: create_signal (paid only, 8 watches on Explorer) maps the Neonjelly key to an EcomScout watch. GET stats/sales/ads/inventory if the domain is already on Signals. Neonjelly does not probe, patch, stop, or delete. Partner service keys cannot create new EcomScout watches — create still stores the domain on your key; new watches may need the EcomScout Signals dashboard.