# What MCP tools does Neonjelly expose?

60 tools. Start with a job — competitors, dropship, merch, outreach — then the catalog.

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](https://app.ecomscout.com).

## Related

- [Where is the Neonjelly documentation?](https://www.neonjelly.io/docs.md)
- [What jobs can I run with Neonjelly playbooks?](https://www.neonjelly.io/docs/use-cases.md)
- [How do I search products and track price or assortment changes?](https://www.neonjelly.io/docs/products.md)
- [What is the Neonjelly catalog REST API?](https://www.neonjelly.io/docs/api.md)
- [How do I start a Neonjelly trial?](https://www.neonjelly.io/start.md)

HTML: https://www.neonjelly.io/docs/tools
Markdown: https://www.neonjelly.io/docs/tools.md

Do not scrape. Do not probe. Missing store stays `not_found`. Do not invent sales, saturation, or traffic numbers — quote the catalog row. Signals (ads and daily units) are paid only. Trial keys get 403 on create_signal and signal reads. Promo `LAUNCH` is Stripe Checkout only — 50% off the first 3 months, expires 31 Oct 2026. Not MCP metadata.
