E-commerce Sales Signals MCP
PYPI · ECOMMERCE-SALES-MCP · 2 COMPONENTS
E-commerce sales signals: Amazon bestsellers and reviews, eBay sold prices, TikTok Shop, Etsy sales.
Available components
Last scanned (2 hours ago)
Scores higher than 74% of PyPI servers
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 28 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to GeminiGeorge22/ecommerce-sales-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability52
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4846 tokens (~807/item across 6 items; 6 tools + 0 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 Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
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
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
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.
- 4 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 3 Nov 26 62
First indexed and scored.
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 5 Nov 2026 · Analysed pypi/ecommerce-sales-mcp@0.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | GeminiGeorge22/ecommerce-sales-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/GeminiGeorge22/ecommerce-sales-mcp/.github/workflows/pypi-publish.yml@refs/tags/python-v0.2.1 |
| Rekor log index | 3680828932 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:c20576eaac3280dc27d8f437c2640e5e8465b96bda54782fa1634052b2ed181b |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 28 packages
| Packages resolved | 28 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
caffein-dot-dev--ebay-sold-listings eBay Sold Listings Search ~1,193
eBay Sold Listings Search. Get confirmed eBay sold prices. Search by keyword across 8 marketplaces, filter by date range, and export clean structured data for comps, resale pricing, and market research. When to use: Use when you need what items actually sold for on eBay (sold comps) for a keyword, marketplace and date range. Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "caffein.dev/ebay-sold-listings" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/caffein.dev/ebay-sold-listings
| Name | Type | Req | Description |
|---|---|---|---|
| aspectFilter | object | – | eBay aspect facet filters, e.g. {"Brand": "Nike"}. Keys and values are double-encoded per eBay's convention. |
| buyingFormat | string | – | Search-page buying format filter. Options: all = All; auction = Auction; buyItNow = Buy It Now; acceptsOffers = Accepts Offers. |
| categoryId | string | – | eBay category ID — maps directly to the `_sacat` URL parameter. Enter ANY eBay category ID as free text; you are not limited to a preset list. Use "0" (the default) for All Categories. Don't know the… |
| conditionId | integer | – | Numeric eBay condition ID — overrides itemCondition when set. |
| count | integer | – | Number of listings to scrape (default: 100) |
| daysToScrape | integer | – | Number of days back to scrape sold listings (default: 30) |
| ebaySite | string | – | eBay site to scrape from Options: ebay.com = eBay.com (US); ebay.co.uk = eBay.co.uk (UK); ebay.de = eBay.de (Germany); ebay.fr = eBay.fr (France); ebay.it = eBay.it (Italy); ebay.es = eBay.es (Spain)… |
| exactMatch | boolean | – | When true (default), eBay's loosened 'results matching fewer words' items are removed so only listings closely matching the keyword are returned. Set to false to include them. |
| includeCompletedListings | boolean | – | When true (default), includes eBay's Completed Listings filter alongside the Sold filter. This enables accurate detection of 'Best Offer Accepted' listings via the listingType and isBestOfferAccepted… |
| itemCondition | string | – | Search-page condition filter. Options: any = Any; new = New; used = Used. |
| itemLocation | string | – | Search-page item location filter. Options: default = Default; domestic = Domestic only; worldwide = Worldwide. |
| keyword | string | – | Single search keyword. Deprecated: use the 'keywords' array field instead. |
| keywords | array | – | One or more search keywords. Each keyword runs as a separate search with the same filters applied to all. Example: ["rtx 4080"] |
| maxPrice | integer | – | Maximum sold price filter (search-page filter). |
| minPrice | integer | – | Minimum sold price filter (search-page filter). |
| postalCode | string | – | Delivery postal code for more accurate shipping prices, in the format of the selected eBay site (e.g. a ZIP code on ebay.com, SW1A 1AA on ebay.co.uk). Leave blank to use a central postcode for the si… |
| search | string | – | Deprecated: alias for the single-keyword `keyword` field. Use the `keywords` array instead. Accepted for backward compatibility with callers that send `search`. Backslash-escaped quotes (\") in the v… |
| sellerCountry | string | – | Only return listings from sellers located in this country. Two-letter ISO code, e.g. JP or GB . When set, the Item location filter is ignored. If no listing matches, eBay can return listings from oth… |
| sellerType | string | – | Filter by seller type. EU sites only — works on ebay.de, ebay.fr, ebay.it and ebay.es. On all other sites this filter is ignored and results are unfiltered. Options: any = Any; private = Private; bus… |
| sortOrder | string | – | Sort order for the sold search results page. Options: endedRecently = Ended recently; timeNewlyListed = Time: newly listed; pricePlusPostageLowest = Price + postage: lowest first; pricePlusPostageHig… |
| subcategoryId | string | – | Optional eBay subcategory ID — also maps to `_sacat`. Enter ANY subcategory ID as free text. When set, it overrides the Category field above. Leave blank to search at the category level. Full ID refe… |
No output schema declared.
No examples provided.
junglee--amazon-bestsellers Amazon Bestsellers Scraper ~606
Amazon Bestsellers Scraper. Scrape the Amazon Best Sellers categories and extract details on top 100 most popular items on Amazon. Download product name, price, URL, and thumbnail image. Best used on .com, .co.uk, .de, .fr, .es, and .it domains. Download your data in various formats: HTML table, JSON, CSV, Excel, and more. When to use: Use when you need the top 100 Amazon Best Sellers for a category URL (name, price, rank, URL, image). Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "junglee/amazon-bestsellers" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/junglee/amazon-bestsellers
| Name | Type | Req | Description |
|---|---|---|---|
| categoryUrls | array | yes | Pick one or a few Best Seller categories to scrape. If you enter a top-level category, all subcategories will be scraped (up to max depth). Category URL has to contain Best-Sellers , best-sellers or… |
| depthOfCrawl | integer | – | Amazon Best Sellers covers 42 main categories. Each of those have at least one more subcategory level. Setting this field to 2 will get you roughly 550 subcategories, each with 100 results. |
| detailedInformation | boolean | – | Check this if you want to get the maximum amount of information about individual products. However, choosing this option means the scraper could take longer, since it is extracting more data. |
| language | string | – | Language to use on Amazon. **Disclaimer**: each Amazon domain has a different set of supported languages. If you choose a language that is not supported by the domain, the scraper will use the defaul… |
| maxItemsPerStartUrl | integer | – | Enter the maximum number of results you want to scrape per each star URL. Note that Amazon has a hard limit of 100 bestsellers per category. Example: 100 |
| useCaptchaSolver | boolean | – | If enabled the scraper will automatically solve captchas thrown by Amazon. This will decrease the amount of request retries and increase the speed of the scraper. ***IMPORTANT*** - This option works… |
No output schema declared.
No examples provided.
junglee--amazon-reviews-scraper Amazon Reviews Scraper ~912
Amazon Reviews Scraper. Amazon scraper to extract reviews from Amazon products. Scrape and download detailed reviews without using the Amazon API, including rating score, review description, reactions and images. Download your data as HTML table, JSON, CSV, Excel, XML. When to use: Use when you need the customer reviews of specific Amazon products (rating, text, date, reactions, images). Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "junglee/amazon-reviews-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/junglee/amazon-reviews-scraper
| Name | Type | Req | Description |
|---|---|---|---|
| deduplicateRedirectedAsins | boolean | – | If set, the crawler will deduplicate the redirected ASINs (by default). Otherwise the product will be saved multiple times under the ASINs it was redirected to. |
| filterByRatings | array | – | Select the number of stars by which reviews should be filtered. Amazon's default is All stars . Duplicate reviews, caused by selecting overlapping ratings (e.g., 1 star and All critical ) will be fil… |
| includeGdprSensitive | boolean | – | Personal data such as name, ID or profile image is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate… |
| maxReviews | integer | – | Type in the amount of reviews to be scraped. Leave this blank if you want to extract all reviews. ❗ Note: max amount of reviews per product is 100 per star count (e.g. 100 reviews per 1 star), 100 pe… |
| productUrls | array | yes | Enter the URL or URLs of the Amazon products you want to scrape. (E.g., https://www.amazon.com/Sceptre-E248W-19203R-Monitor-Speakers-Metallic/dp/B0773ZY26F). Click + Add to scrape multiple URLs at on… |
| reviewsAlwaysSaveCategoryData | boolean | – | If enabled, the Actor will return the review category data even if there are no reviews. - Normally, only reviews are saved, if there are no reviews, the review category data is not saved. - With thi… |
| reviewsCutoffDate | string | – | Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. All time values are taken i… |
| reviewsFilterByKeywords | array | – | Enter keywords by which the reviews should be filtered. Each keyword is scraped separately, in a combination with Filter by ratings option. Duplicate reviews, caused by selecting overlapping keywords… |
| reviewsUseProductVariantFilter | boolean | – | If the product has multiple variants (e.g., different colors, sizes, etc.) , you can scrape reviews only for the selected variant. |
| scrapeProductDetails | boolean | – | If enabled, the Actor will scrape and save product data the same way as the [Amazon Product Scraper](https://console.apify.com/actors/BG3WDrGdteHgZgbPK). The product details will be available in the… |
| sort | string | – | Select by which criteria the reviews should be sorted. Amazon's default is Top reviews . Options: helpful = Top reviews; recent = Most recent. |
No output schema declared.
No examples provided.
publicrecords--etsy-search-scraper Etsy Scraper — Listings, Prices & Best Sellers ~957
Etsy Scraper — Listings, Prices & Best Sellers. Scrape Etsy search results by keyword, category or market page: title, price, rating, reviews, Bestseller and Star Seller badges, ad flag and search rank. When to use: Use when you need what ranks on Etsy for a keyword, category or market page: position, price, rating, review count, Bestseller/Star Seller badges and whether the listing is an ad. Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "publicrecords/etsy-search-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/etsy-search-scraper
| Name | Type | Req | Description |
|---|---|---|---|
| categoryUrls | array | – | Etsy category pages, e.g. https://www.etsy.com/c/jewelry/necklaces (no query string). Read in Etsy's default order. |
| fillLazyCards | boolean | – | Etsy renders 12 cards and lazy-loads the rest (48 more on page 1). On, the run fetches them the way Etsy's own page does, so you get the whole page in rank order. Off, you get the 12 rendered cards p… |
| free_shipping | boolean | – | Only return listings with free shipping. |
| instant_download | boolean | – | Only return digital download listings. |
| is_best_seller | boolean | – | Keeps listings shown with Etsy's Bestseller badge on the search page. |
| is_discounted | boolean | – | Only return listings currently on sale. |
| is_handmade_only | boolean | – | Only return listings Etsy flags as handmade. |
| is_personalizable | boolean | – | Only return listings that offer personalization. |
| is_star_seller | boolean | – | Only return listings from Star Seller shops. |
| marketPhrases | array | – | Phrases for Etsy's /market/ pages (any phrase resolves). Example: personalized dog collar |
| maxCacheAgeHours | integer | – | Serve a keyword from our recent snapshot of the same search when it is at most this many hours old and holds every row you asked for; otherwise fetch live. Snapshot rows say data_source "cache", stal… |
| maxItems | integer | – | Stop after this many listing rows across all inputs. Raise it (or set 0 for no cap) to get more pages. |
| maxPages | integer | – | Pages per input, 1–20 (Etsy's own cap). On the Standby/MCP endpoint one call stops at 240 s and says so (truncated:true with pagesDone/pagesRequested); big jobs belong in a batch run. |
| maxPrice | integer | – | Highest price to include, whole units. Leave empty for no maximum. |
| max_processing_days | integer | – | Only return listings whose processing time is at most this many days (Etsy's ready-to-ship filter). |
| minPrice | integer | – | Leave empty for no minimum. |
| proxyConfiguration | object | – | Etsy blocks datacenter IPs. Default: Apify Proxy RESIDENTIAL, included in the event prices (no separate proxy or compute charge). Your own residential proxy works too. A blocked page is never charged. |
| queries | array | – | Keywords to search, one per line (e.g. ceramic mug). Each keyword lands on Etsy's /market page, then pages through Etsy's own search API — every listing on the page (rendered and lazy-loaded), in Ets… |
| ship_to | string | – | Two-letter code, e.g. US, GB, DE. |
| sort | string | – | Order of results, as on Etsy's own sort menu. Applies to search keywords (a market phrase with a sort set runs as a keyword search). Options: relevance = Relevance (Etsy default); newest = Newest; pr… |
| source | string | – | Optional free-text label for this run (for example the Make template that started it). Copied onto every listing row and onto RUN_SUMMARY so template runs can be filtered. Leave empty if you do not n… |
No output schema declared.
No examples provided.
publicrecords--etsy-shop-velocity Etsy Shop Sales Tracker & Scraper ~396
Etsy Shop Sales Tracker & Scraper. Track Etsy shop sales counters with this Etsy shop scraper: measured sales counts with the date each was read. When to use: Use when you need how many sales an Etsy shop has made, or how fast shops are selling, filtered by shop name, title keyword, category or change date. Returns one row per shop with the measured sales counter and the date it was read. Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "publicrecords/etsy-shop-velocity" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/etsy-shop-velocity
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Exact panel category label, matched case-insensitively, e.g. "kids & baby > toys", "home & living > home decor > scatter cushions", "art & collectibles > fine art ceramics". The label is filled for a… |
| keywords | array | – | Case-insensitive words matched against the shop title and headline. |
| maxShops | integer | – | Upper bound on rows returned (and charged). |
| minSales | integer | – | Only shops at or above this sales counter. |
| shops | array | – | Etsy shop names (the part after etsy.com/shop/). Leave empty to use the keyword or category filters. Example: ["OrelCeramics","Bestickend"] |
| since | string | – | ISO date. Return only shops whose counters changed since this date. Empty = all matching shops. |
No output schema declared.
No examples provided.
unseenuser--TikTok-Shop-Scraper TikTok Shop Scraper [NO COOKIES] ✅ ~738
TikTok Shop Scraper [NO COOKIES] ✅. Extract product data, reviews, seller info, creator affiliates, and GMV/sales estimates from TikTok Shop at scale. Filter by category, price range, and country (US, UK). Built for dropshippers, e-commerce sellers, and DTC brands hunting trending products before they go viral. When to use: Use for TikTok Shop products, reviews, sellers, creator affiliates and GMV/sales estimates by category, keyword, shop or product URL. Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset. Behavior: starts one run of the Apify Actor "unseenuser/TikTok-Shop-Scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/unseenuser/TikTok-Shop-Scraper
| Name | Type | Req | Description |
|---|---|---|---|
| getRelatedVideos | boolean | – | Only used in Product Details mode. Adds a relatedVideoCount field. The affiliate videos themselves are returned either way, so this changes very little - it is hidden from the form and kept only so t… |
| maxResults | integer | – | 0 = return all available results (no limit). Any other number is a limit per query, shop or creator: with 5 keywords and 100 here, you get up to 500 rows in total. There is no ceiling on this number.… |
| maxReviewsPerProduct | integer | – | 0 = fetch every review the product has (no limit). Only used in Product Reviews mode. There is no ceiling here either, so be aware that popular products can carry tens of thousands of reviews and eac… |
| mode | string | yes | Pick what you want to scrape. The matching section below has the same emoji. |
| productUrls | array | – | Full product detail page URLs. Right-click any TikTok Shop product and copy the link. Format: https://www.tiktok.com/shop/pdp/ / |
| region | string | – | The United States is the only fully supported market and the only one this Actor is tested against. The other markets are selectable and sometimes return data, but they are unreliable and may come ba… |
| searchKeywords | array | – | What you'd type into TikTok Shop's search bar. One per line. |
| shopUrls | array | – | Full store URLs. On the app, tap a shop name and copy the link. Format: https://www.tiktok.com/shop/store/ / |
| sortBy | string | – | Only used in Shop Catalog mode. 'Best selling' surfaces a store's proven winners; 'Newest' surfaces what they just launched. Options: top = 🔥 Best selling (default); new_releases = 🆕 Newest release… |
| usernames | array | – | TikTok handles, one per line. The @ prefix is optional - both 'hyram' and '@hyram' work. |
No output schema declared.
No examples provided.
How do I install the E-commerce Sales Signals MCP server?
E-commerce Sales Signals MCP runs locally as a PyPI package, launched with uvx ecommerce-sales-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · ecommerce-sales-mcp
claude mcp add geminigeorge22-ecommerce-sales-mcp -- uvx ecommerce-sales-mcp
What is the E-commerce Sales Signals MCP server?
E-commerce Sales Signals MCP is listed in the public MCP registry as io.github.GeminiGeorge22/ecommerce-sales-mcp. E-commerce sales signals: Amazon bestsellers and reviews, eBay sold prices, TikTok Shop, Etsy sales. This page covers its PyPI package (ecommerce-sales-mcp).
Is the E-commerce Sales Signals MCP server safe to use?
E-commerce Sales Signals MCP scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. 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 E-commerce Sales Signals MCP server expose?
E-commerce Sales Signals MCP exposes 6 tools: junglee--amazon-bestsellers, junglee--amazon-reviews-scraper, caffein-dot-dev--ebay-sold-listings, unseenuser--TikTok-Shop-Scraper, publicrecords--etsy-shop-velocity, publicrecords--etsy-search-scraper. Their descriptions and schemas cost roughly 4,802 tokens of context every time the server is loaded.
Is the E-commerce Sales Signals MCP server still maintained?
E-commerce Sales Signals MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the E-commerce Sales Signals MCP server under?
E-commerce Sales Signals MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.