{"name":"io.neonjelly/mcp","slug":"neonjelly-mcp","title":"Neonjelly","description":"Remote MCP over 1.37M Shopify stores. 14-day trial, 100/day, no account. Paid from $29/mo.","url":"https://mcp.market/server/neonjelly-mcp","rating":null,"grade":"B","score":80,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-04T14:21:11.000Z","license":null},"uptime":null,"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/germanas/neonjelly-mcp-public","website":"https://www.neonjelly.io","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://mcp.neonjelly.io/c/{connect_token}/mcp","variables":{"connect_token":{"description":"Connect key (njc_…). Mint a 14-day trial at https://www.neonjelly.io/start — no account.","isRequired":true,"isSecret":true}}}],"packages":[],"tools":[{"name":"assortment_watch","description":"List new and removed SKUs plus bestseller enter/exit. Filter by storeDomain or productType when the user names a shop or category.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Assortment rows. Max 50."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"brief_market","description":"Return a one-page TAM brief: vertical size, geos, movers, and an optional filtered cohort from 1.37M stores. Pass a vertical; quote catalog counts only — do not invent TAM.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"minVisits":{"type":"number","description":"Minimum monthly visits. Example: 10000"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"change_tracker","description":"Return a full change board: unified feed, all 8 product change types, 5 store change types, and Signals SKU changes if watched. Prefer this over calling each change tool separately.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Optional store hostname without protocol. Example: gruntstyle.com"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"limit":{"type":"integer","minimum":1,"maximum":80,"description":"SKU rows. Max 80."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"cohort_tam","description":"Roll a filtered store cohort into a groupBy table (country, vertical, industry, category). This is not the unfiltered get_countries TAM — use that when no filters apply.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"category":{"type":"string","description":"Store category label from the catalog."},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"isDropshipper":{"type":"boolean","description":"If true, only stores the catalog flags as dropship."},"minVisits":{"type":"number","description":"Minimum monthly visits. Example: 10000"},"groupBy":{"type":"string","enum":["country","vertical","industry","category"],"description":"Roll rows into a breakdown table instead of store cards."},"groupMetric":{"type":"string","enum":["mean","median","max","min"],"description":"How to aggregate visits/revenue when groupBy is set."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_stacks","description":"Compare 2–8 store app stacks: shared vs exclusive apps, tagged by role (email, support, reviews, subs, ads). Pass hostnames, not brand names.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":8,"description":"2–8 store hostnames. Example: [\"gymshark.com\",\"allbirds.com\"]"}},"required":["domains"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_stores","description":"Compare 2–8 store cards side by side (traffic, revenue band, apps, rating). Missing domains land in notFound — do not invent the missing rows.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":8,"description":"2–8 store hostnames. Example: [\"gymshark.com\",\"allbirds.com\"]"}},"required":["domains"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"competitor_moves","description":"List catalog store and SKU changes plus vertical movers for one competitor domain. Ads and daily units need a paid Signals watch — do not offer create_signal on trial.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_signal","description":"Paid plans only (trial 403). Create a Signals watch on a competitor domain for ads, units, inventory, and social. Tight watch cap; meters the key. No probe, no scrape.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"autoTrack":{"type":"string","enum":["bestsellers","none"],"description":"Signals auto-track mode. bestsellers watches top SKUs; none is the card only."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"diligence_pack","description":"Build an IC memo for one domain: card, growth, traffic, stack roles, bestsellers, changes, and contacts. Includes Signals stats only if that domain is already watched.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_outreach","description":"Filter the 1.37M-store catalog, hydrate each row, and keep stores that have an email or Instagram. Caps at 10 (each costs a call) — country is a filter, not a login region.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"appSlug":{"type":"string","description":"Shopify app slug. Example: klaviyo-email-marketing"},"minVisits":{"type":"number","description":"Minimum monthly visits. Example: 10000"},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Max stores to hydrate. Caps at 10 — each costs a catalog call."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_peers","description":"Find stores in the same vertical, country, and visit band as a target domain, then compare cards. Call resolve_store first if you only have a brand name.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"limit":{"type":"integer","minimum":2,"maximum":25,"description":"How many peer stores to return. Default 8, max 25."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_analytics_overview","description":"Return catalog coverage: store/SKU counts, averages, top verticals and countries. Quote these snapshot figures only — do not invent traffic totals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_app","description":"Return one Shopify app plus an install-base sample. Copy slug from search_apps, then get_app_stores for the merchant list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"description":"Shopify App Store slug. Example: klaviyo-email-marketing"}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_app_stores","description":"List merchants observed running a Shopify app, sorted by visits. Use for “who uses Klaviyo?” store lists — country filters live on search_stores, not here.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"description":"Shopify App Store slug. Example: klaviyo-email-marketing"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_changes","description":"Return the unified store + product movement feed. Prefer change_tracker when the user wants every change type on one board.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity":{"type":"string","enum":["product","store"],"description":"Limit the unified change feed to products or stores."},"domain":{"type":"string","description":"Optional store hostname without protocol. Example: gruntstyle.com"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_contacts","description":"Return emails, social URLs, and ESP/support app tells for one store. No phone or owner names in this catalog — pass domain or q.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Optional store hostname without protocol. Example: gruntstyle.com"},"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_countries","description":"Return unfiltered geo TAM (store counts by country). Pass vertical to slice one market; a filtered cohort belongs on search_stores groupBy=country.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_examples","description":"Same playbook map as list_playbooks (VC, competitor, dropship, outreach). Prefer list_playbooks on new sessions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_movers","description":"List stores growing or shrinking on visits or modeled revenue. Defaults: metric/direction any, minPct 5. Quote catalog movers only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"metric":{"type":"string","enum":["visits","revenue","any"],"description":"Mover metric. Default any."},"direction":{"type":"string","enum":["up","down","any"],"description":"Mover direction. Default any."},"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"minPct":{"type":"number","description":"Minimum percent move for movers. Default 5."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_product","description":"Return one SKU by store domain plus Shopify handle. Use get_store_products or product_search when you do not yet have the handle.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"handle":{"type":"string","minLength":1,"description":"Shopify product handle from the PDP URL. Example: classic-hoodie"}},"required":["domain","handle"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_product_changes","description":"List price, new, removed, position, and bestseller SKU movements. Filter by storeDomain or productType; default noise floor is minPriceChangePct.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"changeType":{"type":"string","enum":["price_increase","price_decrease","new_product","removed_product","position_up","position_down","best_seller_entered","best_seller_exited"],"description":"One SKU movement type."},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"minPriceChangePct":{"type":"number","description":"Minimum absolute price-change percent. Default 10."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_product_research","description":"Return the saturation report for one product idea. Copy id from search_product_ideas or niche_research — do not invent seller counts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Product-idea id from search_product_ideas or niche_research."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal","description":"Paid plans only (trial 403). Return one signal card. id is a Mongo id or a domain already on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_ads","description":"Paid plans only (trial 403). Return the ad library or a slice (overview default). No probe — domain must already be on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"},"slice":{"type":"string","enum":["overview","ads","correlation","revenue","product-impact","timeline","events"],"description":"Ad library slice. Default overview."},"days":{"type":"integer","minimum":1,"maximum":365,"description":"Lookback window in days for ad slices. Max 365."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_apps","description":"Paid plans only (trial 403). Return apps observed on a tracked store. Set changes=true for app change history.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"},"changes":{"type":"boolean","description":"If true, return app change history instead of the current stack."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_insights","description":"Paid plans only (trial 403). Return the insight feed for one watched domain. Prefer this over list_signal_insights.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_inventory","description":"Paid plans only (trial 403). Return the stock timeline for a watched store. Domain must already be on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_product_changes","description":"Paid plans only (trial 403). Return product movements on a tracked store. Catalog-wide SKU moves use get_product_changes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_sales","description":"Paid plans only (trial 403). Return daily units and variants. Needs ≥2 inventory snapshots on the watch — do not invent unit counts.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"},"from":{"type":"string","description":"Inclusive start date YYYY-MM-DD."},"to":{"type":"string","description":"Inclusive end date YYYY-MM-DD."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_social","description":"Paid plans only (trial 403). Return follower snapshots for a watched store. Domain must already be on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_signal_stats","description":"Paid plans only (trial 403). Return totals plus store profile for a signal. Domain must already be on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Signal Mongo id or a domain already on Signals. Example: gruntstyle.com"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store","description":"Return one merchant card: traffic, modeled revenue, rating, apps, and socials. Call resolve_store first if you only have a brand name — missing domains stay not_found.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store_apps","description":"List Shopify apps detected on one merchant. Use compare_stacks when the user wants shared vs exclusive apps across several domains.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store_changes","description":"List observation diffs for one store: revenue, visits, products, rating, apps. For a mixed product+store board, prefer change_tracker.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"changeType":{"type":"string","enum":["revenue_change","visits_change","products_change","rating_change","apps_change"],"description":"One store observation-diff type."},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store_history","description":"Return daily snapshots: visits, revenue band, rating, and product counts, up to 365 days. Use for growth charts after get_store.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"limit":{"type":"integer","minimum":1,"maximum":365,"description":"Daily snapshot days. Max 365."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store_products","description":"List SKUs for one merchant with price, vendor, type, and bestseller filters. Prefer this over global search_products when you already have a domain.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"isBestSeller":{"type":"boolean","description":"If true, only SKUs currently flagged as bestsellers."},"vendor":{"type":"string","description":"Product vendor / supplier name as listed on the storefront."},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"tag":{"type":"string","description":"Shopify product tag."},"priceMin":{"type":"number","description":"Minimum listed price in store currency."},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"sort":{"type":"string","enum":["price","position","scraped"],"description":"SKU sort: price, merchandising position, or last scrape."},"order":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Default desc."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_store_traffic","description":"Return monthly visits and channel mix for one store. Use after get_store when the user asks how traffic is trending.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Store hostname without protocol. Example: gruntstyle.com"},"limit":{"type":"integer","minimum":1,"maximum":120,"description":"Monthly traffic points. Max 120."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_upstream_health","description":"Return catalog health JSON and whether auth is required. Use when a lookup fails unexpectedly — not for store research.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_verticals","description":"Return market size by vertical (store counts and averages). Pass countryCode to slice one geo — for a filtered cohort, use search_stores with groupBy=vertical.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_playbooks","description":"List composed-tool playbooks by job: store lists, VC, competitor, dropship, outreach, merch. Start here when the user has not named a tool — then call the playbook's first tool.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_product_sellers","description":"List stores selling a product idea, sorted by traffic or price. Copy id from search_product_ideas — this is who-sells-this, not a single merchant SKU list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Product-idea id from search_product_ideas or niche_research."},"sort":{"type":"string","enum":["traffic","price"],"description":"Seller list sort: store traffic or SKU price."},"page":{"type":"integer","minimum":1,"description":"1-based page. Default 1."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Sellers to return. Max 100."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_signal_insights","description":"Paid plans only (trial 403). Account-wide insight feed — often empty unless the key owns watches. Prefer get_signal_insights with a domain already on Signals.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_signals","description":"Paid plans only (trial 403). List Signals watches stored on this Neonjelly key. Then GET a domain that is already on Signals — do not advertise this on trial.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"niche_research","description":"Run semantic product-idea search plus a saturation report and the stores that sell the top hit. q is a product name or category, not a domain — quote seller count and the UNTAPPED→SATURATED verdict.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":2,"description":"Product name or category, not a domain. Example: neck fan or yoga mat"},"market":{"type":"string","enum":["UNTAPPED","LOW COMPETITION","COMPETITIVE","SATURATED"],"description":"Keep ideas with this saturation verdict only."},"limit":{"type":"integer","minimum":1,"maximum":40,"description":"Product ideas to return. Max 40."}},"required":["q"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"overlap_vendors","description":"Find product-vendor overlap and the average price gap between two stores. Use after compare_stacks when you need shared suppliers, not shared apps.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domainA":{"type":"string","minLength":1,"description":"First store hostname. Example: gymshark.com"},"domainB":{"type":"string","minLength":1,"description":"Second store hostname. Example: allbirds.com"},"limit":{"type":"integer","minimum":5,"maximum":80,"description":"Shared-vendor rows to return. Min 5, max 80."}},"required":["domainA","domainB"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"price_watch","description":"List price decreases and increases across stores or one merchant. Default minPriceChangePct is 10 — raise it to cut noise.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"},"minPriceChangePct":{"type":"number","description":"Minimum absolute price-change percent. Default 10."},"limit":{"type":"integer","minimum":1,"maximum":60,"description":"Change rows. Max 60."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"product_intel","description":"Build one SKU memo: card, discount vs compare-at, store, SKU change history, and store bestsellers. Pass domain+handle, or q to resolve first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Optional store hostname without protocol. Example: gruntstyle.com"},"handle":{"type":"string","description":"Optional Shopify product handle. Example: classic-hoodie"},"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"product_search","description":"Search cross-store SKUs and return rows plus facets (vendors, types, stores, price band). At least one filter is required. For saturation / who-sells-this-idea, use niche_research.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"vendor":{"type":"string","description":"Product vendor / supplier name as listed on the storefront."},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"tag":{"type":"string","description":"Shopify product tag."},"storeVertical":{"type":"string","description":"Vertical of the selling store. Example: Apparel"},"isBestSeller":{"type":"boolean","description":"If true, only SKUs currently flagged as bestsellers."},"priceMin":{"type":"number","description":"Minimum listed price in store currency."},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"sort":{"type":"string","enum":["price","position","scraped"],"description":"SKU sort: price, merchandising position, or last scrape."},"order":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Default desc."},"limit":{"type":"integer","minimum":1,"maximum":80,"description":"SKU rows. Max 80."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_store","description":"Resolve a brand name or URL against 1.37M Shopify storefronts and return up to 5 candidates. On a single hit, also return the full store card — call this before inventing a domain; missing stores stay not_found.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Brand, product, or free-text query. Example: gymshark or neck fan"}},"required":["q"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"screen_dropship","description":"List dropship-flagged stores in a vertical/geo plus their cheapest SKUs. Country is a filter, not a login region — quote the catalog flag, do not invent supplier names.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"minVisits":{"type":"number","description":"Minimum monthly visits. Example: 10000"},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"limit":{"type":"integer","minimum":1,"maximum":12,"description":"How many dropship-flagged stores to screen. Max 12."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_apps","description":"Search the Shopify App Store catalog by name, category, pricing, or rating. Follow a slug with get_app_stores to see which merchants run it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"category":{"type":"string","description":"Store category label from the catalog."},"pricingType":{"type":"string","description":"App Store pricing type filter. Example: free or subscription"},"minRating":{"type":"number","description":"Minimum store or app rating 0–5. Example: 4.2"},"builtForShopify":{"type":"boolean","description":"If true, only Built for Shopify apps."},"sort":{"type":"string","enum":["rating","reviews","name"],"description":"App catalog sort. Default rating."},"order":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Default desc."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_product_ideas","description":"Search product names/categories and return ideas with seller count, price, and UNTAPPED→SATURATED verdict — not one-store listings. Prefer niche_research when the user asks “is this saturated?”","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":2,"description":"Product name or category, not a domain. Example: neck fan or yoga mat"},"page":{"type":"integer","minimum":1,"description":"1-based page. Default 1."},"market":{"type":"string","description":"Comma verdicts: UNTAPPED,LOW COMPETITION,COMPETITIVE,SATURATED"},"priceMin":{"type":"number","description":"Minimum listed price in store currency."},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"trending":{"type":"boolean","description":"If true, only ideas marked trending."},"countries":{"type":"string","description":"ISO-2 country list, comma-separated. Example: US,GB,CA"},"region":{"type":"string","description":"Optional region label for product-idea search."}},"required":["q"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_products","description":"Search SKUs across the 368.9M-product catalog. At least one filter is required. For saturation or who-sells-this-idea, use niche_research.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"vendor":{"type":"string","description":"Product vendor / supplier name as listed on the storefront."},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"tag":{"type":"string","description":"Shopify product tag."},"storeVertical":{"type":"string","description":"Vertical of the selling store. Example: Apparel"},"isBestSeller":{"type":"boolean","description":"If true, only SKUs currently flagged as bestsellers."},"priceMin":{"type":"number","description":"Minimum listed price in store currency."},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"sort":{"type":"string","enum":["price","position","scraped"],"description":"SKU sort: price, merchandising position, or last scrape."},"order":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Default desc."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_stores","description":"Filter 1.37M Shopify stores into a list (emails/socials live on the card) or roll them up with groupBy. Without groupBy you get store cards; with groupBy you get breakdown rows, not stores. Country is a filter, not a login region.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"vertical":{"type":"string","description":"Catalog vertical. Example: Skincare, Apparel, Fashion"},"category":{"type":"string","description":"Store category label from the catalog."},"industry":{"type":"string","description":"Store industry label from the catalog."},"countryCode":{"type":"string","description":"ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN"},"isDropshipper":{"type":"boolean","description":"If true, only stores the catalog flags as dropship."},"appSlug":{"type":"string","description":"Shopify app slug. Example: klaviyo-email-marketing"},"minVisits":{"type":"number","description":"Minimum monthly visits. Example: 10000"},"maxVisits":{"type":"number","description":"Maximum monthly visits. Example: 500000"},"minRevenue":{"type":"number","description":"Minimum modeled monthly revenue in USD. Example: 50000"},"maxRevenue":{"type":"number","description":"Maximum modeled monthly revenue in USD. Example: 1000000"},"minRating":{"type":"number","description":"Minimum store or app rating 0–5. Example: 4.2"},"groupBy":{"type":"string","enum":["country","vertical","industry","category"],"description":"Roll rows into a breakdown table instead of store cards."},"groupBy2":{"type":"string","enum":["country","vertical","industry","category"],"description":"Second breakdown axis. Same values as groupBy. Example: country"},"groupMetric":{"type":"string","enum":["mean","median","max","min"],"description":"How to aggregate visits/revenue when groupBy is set."},"sort":{"type":"string","enum":["visits","revenue","rating","domain","stores"],"description":"Store list sort. Use stores when groupBy is set."},"order":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Default desc."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size. Default 20, max 100."},"offset":{"type":"integer","minimum":0,"description":"Skip this many rows. Pair with limit to page."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"source_map","description":"Group a SKU search by vendor: store count and price min/max across the catalog. Use for sourcing or arbitrage after niche_research names the product.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","description":"Optional free-text query. Example: hoodie or gymshark"},"vendor":{"type":"string","description":"Product vendor / supplier name as listed on the storefront."},"productType":{"type":"string","description":"Shopify product type. Example: T-Shirt or Hoodie"},"storeVertical":{"type":"string","description":"Vertical of the selling store. Example: Apparel"},"priceMax":{"type":"number","description":"Maximum listed price in store currency."},"limit":{"type":"integer","minimum":5,"maximum":80,"description":"Vendor groups to return. Min 5, max 80."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"suggest_product_ideas","description":"Autocomplete product-idea names as the user types. Follow with search_product_ideas or niche_research on the chosen row.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"description":"Brand, product, or free-text query. Example: gymshark or neck fan"},"limit":{"type":"integer","minimum":1,"maximum":15,"description":"Autocomplete rows. Max 15."}},"required":["q"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"trending_product_ideas","description":"List product ideas the catalog marks as heating up. Pair a hit with get_product_research and list_product_sellers — do not invent trend scores.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"upgrade","description":"Return the paid upgrade URL when trial expired, daily quota is 0, or Signals is blocked. Does not count against quota. Always show the returned URL — never invent a checkout link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"whoami","description":"Return this key's plan, used today, remaining quota, rate limit, and expiry. Does not count against daily quota — call first when the user asks “what's my quota?” If remaining is 0 or trial expired, call upgrade and open the URL.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"winning_skus","description":"List bestsellers, ≥10% markdowns, and new products for a vertical or one store. Require storeVertical or storeDomain — do not call empty.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"storeVertical":{"type":"string","description":"Vertical of the selling store. Example: Apparel"},"storeDomain":{"type":"string","description":"Limit to one merchant hostname. Example: gymshark.com"},"since":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Example: 2026-08-01"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":80,"grade":"B","scanned_at":"2026-09-20T16:17:27.366Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T16:17:27.346Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1690ms"]},"poisoning":{"score":15,"max":15,"notes":["60 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 16 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.neonjelly.io/c/{connect_token}/mcp","reachable":true,"authRequired":false,"latencyMs":1690,"serverInfo":{"name":"neonjelly","version":"1.1.0"}}],"packages":[],"repo":{"found":true,"owner":"germanas","repo":"neonjelly-mcp-public","archived":false,"pushedAt":"2026-09-04T14:21:11Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/24606864?v=4","ownerCreatedAt":"2016-12-16T12:23:48Z"},"icon":{"url":"https://www.neonjelly.io/brand/icon-512.png","source":"registry","width":512,"height":512},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-09-04T14:21:11.000Z","score":23}}}},"grade_history":[],"reviews":[]}