Neonjelly
REMOTE · MCP.NEONJELLY.IO · SCANNED SEP 20
Remote MCP over 1.37M Shopify stores. 14-day trial, 100/day, no account. Paid from $29/mo.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability87
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6497 tokens (~103/item across 63 items; 60 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 60 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 62 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Neonjelly MCP server?
Neonjelly is a hosted endpoint at https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.neonjelly.io
claude mcp add --transport http io-neonjelly-mcp 'https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp'
{
"mcpServers": {
"io-neonjelly-mcp": {
"url": "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp"
}
}
} {
"servers": {
"io-neonjelly-mcp": {
"type": "http",
"url": "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp"
}
}
} [mcp_servers.io-neonjelly-mcp] url = "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-neonjelly-mcp": {
"type": "remote",
"url": "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp",
"enabled": true
}
}
} openclaw mcp add io-neonjelly-mcp --url 'https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp' --transport streamable-http
mcp_servers:
io-neonjelly-mcp:
url: "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp" {
"McpServers": {
"io-neonjelly-mcp": {
"Transport": "http",
"Url": "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp"
}
}
} assistant mcp add io-neonjelly-mcp -t streamable-http -u 'https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp'
{
"mcpServers": {
"io-neonjelly-mcp": {
"type": "http",
"url": "https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 0
- Stability: unverified → 0.03 ▲ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://mcp.neonjelly.io/c/{connect_token}/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.neonjelly.io | CN=YE2,O=Let's Encrypt,C=US | 22 Aug 2026 | 20 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 6d4eb7c0a4e42c136a3897c601f76eec678 |
| SANs: mcp.neonjelly.io | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.neonjelly.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| neonjelly.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.neonjelly.io/c/{connect_token}/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp | HTTPS enforced | 301 | https://mcp.neonjelly.io/c/%7Bconnect_token%7D/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
assortment_watch Assortment watch ~112
List new and removed SKUs plus bestseller enter/exit. Filter by storeDomain or productType when the user names a shop or category.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Assortment rows. Max 50. |
| productType | string | – | Shopify product type. Example: T-Shirt or Hoodie |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| storeDomain | string | – | Limit to one merchant hostname. Example: gymshark.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
brief_market Brief a market ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| minVisits | number | – | Minimum monthly visits. Example: 10000 |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
change_tracker Change board ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Optional store hostname without protocol. Example: gruntstyle.com |
| limit | integer | – | SKU rows. Max 80. |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
cohort_tam Cohort TAM ~182
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Store category label from the catalog. |
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| groupBy | string | – | Roll rows into a breakdown table instead of store cards. |
| groupMetric | string | – | How to aggregate visits/revenue when groupBy is set. |
| isDropshipper | boolean | – | If true, only stores the catalog flags as dropship. |
| minVisits | number | – | Minimum monthly visits. Example: 10000 |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
compare_stacks Compare app stacks ~71
Compare 2–8 store app stacks: shared vs exclusive apps, tagged by role (email, support, reviews, subs, ads). Pass hostnames, not brand names.
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | 2–8 store hostnames. Example: ["gymshark.com","allbirds.com"] |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
compare_stores Compare store cards ~69
Compare 2–8 store cards side by side (traffic, revenue band, apps, rating). Missing domains land in notFound — do not invent the missing rows.
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | 2–8 store hostnames. Example: ["gymshark.com","allbirds.com"] |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
competitor_moves Competitor moves ~80
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
create_signal Watch a store (paid) ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| autoTrack | string | – | Signals auto-track mode. bestsellers watches top SKUs; none is the card only. |
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
diligence_pack Diligence pack ~62
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
find_outreach Outreach store list ~161
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.
| Name | Type | Req | Description |
|---|---|---|---|
| appSlug | string | – | Shopify app slug. Example: klaviyo-email-marketing |
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| limit | integer | – | Max stores to hydrate. Caps at 10 — each costs a catalog call. |
| minVisits | number | – | Minimum monthly visits. Example: 10000 |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
find_peers Find peer stores ~80
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| limit | integer | – | How many peer stores to return. Default 8, max 25. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_analytics_overview Catalog coverage ~40
Return catalog coverage: store/SKU counts, averages, top verticals and countries. Quote these snapshot figures only — do not invent traffic totals.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_app Get one app ~54
Return one Shopify app plus an install-base sample. Copy slug from search_apps, then get_app_stores for the merchant list.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | Shopify App Store slug. Example: klaviyo-email-marketing |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_app_stores Stores running an app ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size. Default 20, max 100. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| slug | string | yes | Shopify App Store slug. Example: klaviyo-email-marketing |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_changes Unified change feed ~105
Return the unified store + product movement feed. Prefer change_tracker when the user wants every change type on one board.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Optional store hostname without protocol. Example: gruntstyle.com |
| entity | string | – | Limit the unified change feed to products or stores. |
| limit | integer | – | Page size. Default 20, max 100. |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_contacts Store contacts ~74
Return emails, social URLs, and ESP/support app tells for one store. No phone or owner names in this catalog — pass domain or q.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Optional store hostname without protocol. Example: gruntstyle.com |
| q | string | – | Optional free-text query. Example: hoodie or gymshark |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_countries Country TAM ~75
Return unfiltered geo TAM (store counts by country). Pass vertical to slice one market; a filtered cohort belongs on search_stores groupBy=country.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size. Default 20, max 100. |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_examples Example playbooks ~34
Same playbook map as list_playbooks (VC, competitor, dropship, outreach). Prefer list_playbooks on new sessions.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_movers Growing / shrinking stores ~168
List stores growing or shrinking on visits or modeled revenue. Defaults: metric/direction any, minPct 5. Quote catalog movers only.
| Name | Type | Req | Description |
|---|---|---|---|
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| direction | string | – | Mover direction. Default any. |
| limit | integer | – | Page size. Default 20, max 100. |
| metric | string | – | Mover metric. Default any. |
| minPct | number | – | Minimum percent move for movers. Default 5. |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_product Get one SKU ~72
Return one SKU by store domain plus Shopify handle. Use get_store_products or product_search when you do not yet have the handle.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| handle | string | yes | Shopify product handle from the PDP URL. Example: classic-hoodie |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_product_changes SKU movements ~166
List price, new, removed, position, and bestseller SKU movements. Filter by storeDomain or productType; default noise floor is minPriceChangePct.
| Name | Type | Req | Description |
|---|---|---|---|
| changeType | string | – | One SKU movement type. |
| limit | integer | – | Page size. Default 20, max 100. |
| minPriceChangePct | number | – | Minimum absolute price-change percent. Default 10. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| productType | string | – | Shopify product type. Example: T-Shirt or Hoodie |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| storeDomain | string | – | Limit to one merchant hostname. Example: gymshark.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_product_research Product-idea report ~57
Return the saturation report for one product idea. Copy id from search_product_ideas or niche_research — do not invent seller counts.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Product-idea id from search_product_ideas or niche_research. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal Signal card (paid) ~55
Paid plans only (trial 403). Return one signal card. id is a Mongo id or a domain already on Signals.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_ads Signal ads (paid) ~92
Paid plans only (trial 403). Return the ad library or a slice (overview default). No probe — domain must already be on Signals.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Lookback window in days for ad slices. Max 365. |
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| slice | string | – | Ad library slice. Default overview. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_apps Signal apps (paid) ~74
Paid plans only (trial 403). Return apps observed on a tracked store. Set changes=true for app change history.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | boolean | – | If true, return app change history instead of the current stack. |
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_insights Signal insights (paid) ~57
Paid plans only (trial 403). Return the insight feed for one watched domain. Prefer this over list_signal_insights.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_inventory Signal inventory (paid) ~55
Paid plans only (trial 403). Return the stock timeline for a watched store. Domain must already be on Signals.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_product_changes Signal SKU changes (paid) ~57
Paid plans only (trial 403). Return product movements on a tracked store. Catalog-wide SKU moves use get_product_changes.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_sales Signal daily units (paid) ~86
Paid plans only (trial 403). Return daily units and variants. Needs ≥2 inventory snapshots on the watch — do not invent unit counts.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | – | Inclusive start date YYYY-MM-DD. |
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| to | string | – | Inclusive end date YYYY-MM-DD. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_social Signal social (paid) ~54
Paid plans only (trial 403). Return follower snapshots for a watched store. Domain must already be on Signals.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_signal_stats Signal stats (paid) ~55
Paid plans only (trial 403). Return totals plus store profile for a signal. Domain must already be on Signals.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Signal Mongo id or a domain already on Signals. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store Get store card ~60
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store_apps Store app stack ~50
List Shopify apps detected on one merchant. Use compare_stacks when the user wants shared vs exclusive apps across several domains.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store_changes Store observation diffs ~127
List observation diffs for one store: revenue, visits, products, rating, apps. For a mixed product+store board, prefer change_tracker.
| Name | Type | Req | Description |
|---|---|---|---|
| changeType | string | – | One store observation-diff type. |
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| limit | integer | – | Page size. Default 20, max 100. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store_history Store history ~69
Return daily snapshots: visits, revenue band, rating, and product counts, up to 365 days. Use for growth charts after get_store.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| limit | integer | – | Daily snapshot days. Max 365. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store_products Store SKUs ~233
List SKUs for one merchant with price, vendor, type, and bestseller filters. Prefer this over global search_products when you already have a domain.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| isBestSeller | boolean | – | If true, only SKUs currently flagged as bestsellers. |
| limit | integer | – | Page size. Default 20, max 100. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| order | string | – | Sort direction. Default desc. |
| priceMax | number | – | Maximum listed price in store currency. |
| priceMin | number | – | Minimum listed price in store currency. |
| productType | string | – | Shopify product type. Example: T-Shirt or Hoodie |
| q | string | – | Optional free-text query. Example: hoodie or gymshark |
| sort | string | – | SKU sort: price, merchandising position, or last scrape. |
| tag | string | – | Shopify product tag. |
| vendor | string | – | Product vendor / supplier name as listed on the storefront. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_store_traffic Store traffic ~64
Return monthly visits and channel mix for one store. Use after get_store when the user asks how traffic is trending.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Store hostname without protocol. Example: gruntstyle.com |
| limit | integer | – | Monthly traffic points. Max 120. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_upstream_health Catalog health ~32
Return catalog health JSON and whether auth is required. Use when a lookup fails unexpectedly — not for store research.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
get_verticals Vertical market size ~90
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.
| Name | Type | Req | Description |
|---|---|---|---|
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| limit | integer | – | Page size. Default 20, max 100. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
list_playbooks List playbooks ~51
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
list_product_sellers Stores selling an idea ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Product-idea id from search_product_ideas or niche_research. |
| limit | integer | – | Sellers to return. Max 100. |
| page | integer | – | 1-based page. Default 1. |
| sort | string | – | Seller list sort: store traffic or SKU price. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
list_signal_insights Account insight feed (paid) ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size. Default 20, max 100. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
list_signals List Signals watches (paid) ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size. Default 20, max 100. |
| offset | integer | – | Skip this many rows. Pair with limit to page. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
niche_research Niche saturation ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Product ideas to return. Max 40. |
| market | string | – | Keep ideas with this saturation verdict only. |
| q | string | yes | Product name or category, not a domain. Example: neck fan or yoga mat |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
overlap_vendors Vendor overlap ~94
Find product-vendor overlap and the average price gap between two stores. Use after compare_stacks when you need shared suppliers, not shared apps.
| Name | Type | Req | Description |
|---|---|---|---|
| domainA | string | yes | First store hostname. Example: gymshark.com |
| domainB | string | yes | Second store hostname. Example: allbirds.com |
| limit | integer | – | Shared-vendor rows to return. Min 5, max 80. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
price_watch Price watch ~127
List price decreases and increases across stores or one merchant. Default minPriceChangePct is 10 — raise it to cut noise.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Change rows. Max 60. |
| minPriceChangePct | number | – | Minimum absolute price-change percent. Default 10. |
| productType | string | – | Shopify product type. Example: T-Shirt or Hoodie |
| since | string | – | Inclusive start date YYYY-MM-DD. Example: 2026-08-01 |
| storeDomain | string | – | Limit to one merchant hostname. Example: gymshark.com |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
product_intel SKU memo ~99
Build one SKU memo: card, discount vs compare-at, store, SKU change history, and store bestsellers. Pass domain+handle, or q to resolve first.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Optional store hostname without protocol. Example: gruntstyle.com |
| handle | string | – | Optional Shopify product handle. Example: classic-hoodie |
| q | string | – | Optional free-text query. Example: hoodie or gymshark |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
product_search Search SKUs + facets ~243
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.
| Name | Type | Req | Description |
|---|---|---|---|
| isBestSeller | boolean | – | If true, only SKUs currently flagged as bestsellers. |
| limit | integer | – | SKU rows. Max 80. |
| order | string | – | Sort direction. Default desc. |
| priceMax | number | – | Maximum listed price in store currency. |
| priceMin | number | – | Minimum listed price in store currency. |
| productType | string | – | Shopify product type. Example: T-Shirt or Hoodie |
| q | string | – | Optional free-text query. Example: hoodie or gymshark |
| sort | string | – | SKU sort: price, merchandising position, or last scrape. |
| storeDomain | string | – | Limit to one merchant hostname. Example: gymshark.com |
| storeVertical | string | – | Vertical of the selling store. Example: Apparel |
| tag | string | – | Shopify product tag. |
| vendor | string | – | Product vendor / supplier name as listed on the storefront. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
resolve_store Resolve a store ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| q | string | yes | Brand, product, or free-text query. Example: gymshark or neck fan |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
screen_dropship Screen dropship stores ~149
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.
| Name | Type | Req | Description |
|---|---|---|---|
| countryCode | string | – | ISO-3166 alpha-2 country filter, not a login region. Example: US, GB, IN |
| limit | integer | – | How many dropship-flagged stores to screen. Max 12. |
| minVisits | number | – | Minimum monthly visits. Example: 10000 |
| priceMax | number | – | Maximum listed price in store currency. |
| vertical | string | – | Catalog vertical. Example: Skincare, Apparel, Fashion |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | – | Set when the call failed. Example: not_found |
| message | string | – | Human-readable error or hint |
No examples provided.
What is the Neonjelly MCP server?
Neonjelly is an MCP server listed in the public MCP registry as io.neonjelly/mcp. Remote MCP over 1.37M Shopify stores. 14-day trial, 100/day, no account. Paid from $29/mo. This page covers its hosted endpoint (https://mcp.neonjelly.io/c/{connect_token}/mcp).
Is the Neonjelly MCP server safe to use?
Neonjelly scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Neonjelly MCP server expose?
Neonjelly exposes 60 tools: whoami, upgrade, resolve_store, list_playbooks, get_examples, and 55 more. Their descriptions and schemas cost roughly 6,122 tokens of context every time the server is loaded.
Does the Neonjelly MCP server require authentication?
Yes. Neonjelly asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Neonjelly MCP server still maintained?
Neonjelly is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.