Kuaidi100 launched China's first MCP-protocol-compatible logistics information service platform. The core API services of Kuaidi100's Baidiy
Nanocart is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Official NanoCart MCP server — manage your NanoCart store (products, orders, coupons, reports, settings) from any MCP-capable AI agent.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --env 'NANOCART_API_KEY=${NANOCART_API_KEY}' --env 'NANOCART_STORE_ID=${NANOCART_STORE_ID}' --transport stdio nanocart-mcp '--' npx -y nanocart-mcp
# 2 — ask your agent for something these tools do
# get_store_info, get_tier_usage, list_products and 36 more
It needs NANOCART_API_KEY, NANOCART_STORE_ID: this reads them from your environment, so export them first.
Nanocart costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Nanocart as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. Claude Code reads NANOCART_API_KEY (Your NanoCart Admin API key (portal.nanocart.io -> Settings -> API Keys)), NANOCART_STORE_ID (Your store ID / slug (portal.nanocart.io -> Settings -> Store Information)) from your environment each time it starts the server, so the value stays out of its config: export them in your shell profile (macOS, Linux), or run setx NANOCART_API_KEY …, setx NANOCART_STORE_ID … and open a new terminal (Windows). The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user --env 'NANOCART_API_KEY=${NANOCART_API_KEY}' --env 'NANOCART_STORE_ID=${NANOCART_STORE_ID}' --transport stdio nanocart-mcp '--' npx -y nanocart-mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs your own credential rather than the publisher’s: NANOCART_API_KEY — Your NanoCart Admin API key (portal.nanocart.io -> Settings -> API Keys); NANOCART_STORE_ID — Your store ID / slug (portal.nanocart.io -> Settings -> Store Information). You set them in your own client’s config, on your machine — this marketplace never holds it.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
39 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Get the store bound to this API key: name, slug (storeId), tier, domain, currency, configured payment processors, allowed domains. Secrets are never included.
No parameter schema on file.
Current plan tier, its limits, and live usage (active products, coupons, monthly orders). Check this before bulk-creating products.
No parameter schema on file.
List ALL products including drafts and archived. Optionally filter by status or search by name/slug substring (filtering happens client-side).
No parameter schema on file.
List the store’s categories (via the public API).
No parameter schema on file.
List orders, newest first. Filter by status and/or ISO date range; paginate with limit/lastKey.
No parameter schema on file.
List all coupons with usage counts.
No parameter schema on file.
List email subscribers (Product Alerts). Paginate with limit/lastKey.
No parameter schema on file.
Get store settings: shipping_config, tax_config, email_config, order_config.
No parameter schema on file.
Get hosted-storefront configuration (template, hero, sections). Only meaningful on hosted plans.
No parameter schema on file.
Sales report for a date range: revenue, orders, AOV, tax collected (total + by state), shipping, discounts, top products.
No parameter schema on file.
Cart funnel analytics for a date range: sessions that viewed, added to cart, reached checkout, purchased; abandoned value.
No parameter schema on file.
Recent signed-webhook delivery attempts and results.
No parameter schema on file.
Create a product. Defaults to DRAFT (invisible to shoppers) unless status "active". Prices in integer cents. Upload images first with upload_image and pass the returned fileUrls.
No parameter schema on file.
Update any fields of an existing product by productId (partial update). Prices in integer cents.
No parameter schema on file.
Archive (soft-delete) a product — it disappears from the store but stays in the database. CONFIRM WITH THE USER before calling; name the product, not just the id.
No parameter schema on file.
Create a category. parentId makes it a subcategory.
No parameter schema on file.
Update a category by categoryId (partial).
No parameter schema on file.
Create a coupon. value = 1-100 for percent_off, integer cents for fixed_amount, ignored for free_shipping.
No parameter schema on file.
Delete a coupon by code. CONFIRM WITH THE USER before calling.
No parameter schema on file.
Update an order’s status, tracking number, or notes. Status transitions to "shipped" notify the customer webhook. Allowed statuses: pending, confirmed, processing, shipped, delivered, cancelled, refunded. NOTE: to actually refund money, the merchant must use the dashboard — this tool only changes…
No parameter schema on file.
Resend the order confirmation email to the customer for an order.
No parameter schema on file.
Upload an image (or digital file) to the store’s storage and get back a public fileUrl for product/category images. Provide EITHER file_path (local server only) OR source_url (fetched server-side).
No parameter schema on file.
Update ONE settings key: shipping_config, tax_config, email_config, or order_config. Read get_settings first and send the full desired value for that key. Tier limits apply to shipping methods.
No parameter schema on file.
Update store display config: name, domain, brandColor, currency, allowedDomains. Payment credentials can NOT be changed here (dashboard only). Changing allowedDomains affects which sites the widget works on — confirm with the user.
No parameter schema on file.
List the store's fulfillment vendors — custom partners (e.g. a local print shop) that get emailed an order sheet when their routed products sell. Metadata only; use get_vendor for the email template HTML. Pro/Expert plans.
No parameter schema on file.
Fetch one fulfillment vendor including its order-sheet templateHtml.
No parameter schema on file.
Create a fulfillment vendor. Requires name and at least one "to" address. Route products to it afterwards via update_product (fulfillment_vendor_id + vendor_sku). Vendor order emails never include prices. Max 10 vendors per store.
No parameter schema on file.
Update a fulfillment vendor (partial — provide only the fields to change; the rest are preserved, including the saved template). Use status "paused"/"active" to pause or resume order emails.
No parameter schema on file.
Delete a fulfillment vendor — its routed products keep selling but orders stop being forwarded. CONFIRM WITH THE USER before calling; name the vendor, not just the id.
No parameter schema on file.
Email the MERCHANT (never the vendor) a test order sheet rendered with sample data, so they can see exactly what the vendor will receive.
No parameter schema on file.
Manually email an existing order to a vendor — for orders placed before the vendor was set up (items match by the products' CURRENT vendor routing) or deliberate re-sends. Orders with routed items are emailed automatically at payment; this is only for manual sends. Note: while the store's…
No parameter schema on file.
List the store's donation campaigns with live totals (raised, gift count, monthly supporters, MRR) plus the plan's campaign limit and whether branding can be removed.
No parameter schema on file.
Fetch one donation campaign by its slug (campaignId).
No parameter schema on file.
Create a donation campaign. campaignId is the PUBLIC slug used in data-nanocart-donate="..." and <nanocart-donate-stats campaign="..."> — lowercase letters/numbers/dashes, immutable after creation. Embed snippet: <button data-nanocart-donate="SLUG">Donate</button> (plus the store's widget script…
No parameter schema on file.
Update a donation campaign (partial — provide only the fields to change; everything else, including live counters, is preserved). Use status "paused"/"active" to hide or show the donate button. The stats object controls what the PUBLIC widget may display — e.g. {showCount: true, showRaised: false}…
No parameter schema on file.
Delete a donation campaign — the donate button and stats widget stop rendering immediately. Donation records are kept and active Stripe subscriptions are NOT canceled (that happens in the Stripe dashboard). CONFIRM WITH THE USER before calling; name the campaign, not just the slug.
No parameter schema on file.
List donation records, newest first. kind filters to "one_time" (single gifts), "recurring" (supporter records), or "recurring_payment" (individual monthly charges).
No parameter schema on file.
List monthly supporters: amount, status (active/past_due/canceled), consecutive months, lifetime giving, start date.
No parameter schema on file.
Donations report: range totals (raised, gift counts, one-time vs recurring split, new/canceled supporters, average/largest gift) plus live stats (all-time raised, active supporters, MRR) and per-campaign breakdowns. Dates are YYYY-MM-DD.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Nanocart or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (39 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| get_store_info | no tags | |
| get_tier_usage | no tags | |
| list_products | no tags | |
| list_categories | no tags | |
| list_orders | no tags | |
| list_coupons | no tags | |
| list_subscribers | no tags | |
| get_settings | no tags | |
| get_storefront | no tags | |
| sales_report | no tags | |
| analytics_funnel | no tags | |
| list_webhook_deliveries | no tags | |
| create_product | state-write | state-write: declares readOnlyHint: false |
| update_product | state-write | state-write: declares readOnlyHint: false |
| archive_product | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| create_category | state-write | state-write: declares readOnlyHint: false |
| update_category | state-write | state-write: declares readOnlyHint: false |
| create_coupon | state-write | state-write: declares readOnlyHint: false |
| delete_coupon | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| update_order | external-sinkstate-write | external-sink: keyword "webhook"; state-write: declares readOnlyHint: false |
| resend_order_confirmation | state-write | state-write: declares readOnlyHint: false |
| upload_image | state-writeuntrusted-inputexternal-sink | state-write: declares readOnlyHint: false; untrusted-input: handler fetches a URL taken from its input (fetch(args.source_url) at dist/tools.js:438; external-sink: handler sends an HTTP PUT (fetch(presign.uploadUrl) at dist/tools.js:452 |
| update_settings | state-write | state-write: declares readOnlyHint: false |
| update_store_config | state-write | state-write: declares readOnlyHint: false |
| list_vendors | no tags | |
| get_vendor | untrusted-input | untrusted-input: keyword "fetch" |
| create_vendor | state-write | state-write: declares readOnlyHint: false |
| update_vendor | state-write | state-write: declares readOnlyHint: false |
| delete_vendor | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| send_vendor_test | state-write | state-write: declares readOnlyHint: false |
| send_order_to_vendor | state-write | state-write: declares readOnlyHint: false |
| list_donation_campaigns | no tags | |
| get_donation_campaign | untrusted-input | untrusted-input: keyword "fetch" |
| create_donation_campaign | state-write | state-write: declares readOnlyHint: false |
| update_donation_campaign | state-write | state-write: declares readOnlyHint: false |
| delete_donation_campaign | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| list_donations | no tags | |
| list_donation_supporters | no tags | |
| donations_report | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 1.2.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Nanocart can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.