cjdropshipping_change_ order_ logisticsChange an existing order's shipping service.
Search the catalog, check per-warehouse stock, quote freight before you order, then create, pay and track fulfillment orders — and raise a dispute when a parcel goes missing.
PopMCPCJ Dropshipping
Every catalog, order, inventory, logistics, dispute and store operation the connection exposes, plus the events your agent can watch.
cjdropshipping_change_ order_ logisticsChange an existing order's shipping service.
cjdropshipping_change_ order_ warehouseRe-assign an unshipped CJ order to a different CJ warehouse (e.g.
cjdropshipping_confirm_ orderConfirm a created CJ order so it moves into the payment/fulfilment flow.
cjdropshipping_create_ orderCREATE A CJ FULFILMENT ORDER (V3 — the current version; use this one).
cjdropshipping_delete_ orderDELETE an unpaid CJ order.
cjdropshipping_get_ orderGet one CJ order in full: status, the shipping address, every line item (lineItemId, vid, sku, quantity, price), amounts, the chosen logistics service and the tracking number once shipped.
cjdropshipping_get_ orders_ batchFetch up to 100 order details in ONE call — far cheaper than looping cjdropshipping_get_order, and the right choice for any bulk sync.
cjdropshipping_get_ proof_ of_ deliveryGet carrier proof-of-delivery evidence (e.g.
cjdropshipping_list_ order_ logistics_ optionsList the shipping services an EXISTING order can switch to, with price and transit time.
cjdropshipping_list_ ordersList the connected account's CJ orders, newest first, with optional status and payment-date filters.
cjdropshipping_add_ to_ my_ productAdd a CJ catalog product to the connected account's "My Products" list (the CJ-side equivalent of favouriting/importing it so it can be listed to a store).
cjdropshipping_get_ productGet ONE product in full, including every variant and its per-country stock — the tool to call before ordering.
cjdropshipping_list_ categoriesList CJ's full three-level product category tree.
cjdropshipping_list_ global_ warehousesList every CJ global warehouse available for sourcing/shipping: [ { areaId, areaEn (e.g.
cjdropshipping_list_ my_ productsList the products the connected account has added to "My Products" in CJ.
cjdropshipping_list_ product_ reviewsList buyer reviews for one CJ product.
cjdropshipping_list_ productsList CJ catalog products with structured filters.
cjdropshipping_search_ productsSEARCH the CJ product catalog (V2, Elasticsearch-backed) — the best tool for "find me products like X".
cjdropshipping_list_ shopsList the stores connected to this CJ account: [ { id, name, aliasName, type (shopify / ebay / tiktok / …), status (0 deleted, 1 authorized, 2 deactivated, 3 auth failed, 4 auth expired, 5 in transition), countryCode, storeCountry, currencyCode, marketplace, syncInventory, trackUrlTemplate, … } ].
cjdropshipping_create_ disputeSTEP 3: OPEN a dispute (refund or reissue claim) on a CJ order.
cjdropshipping_get_ disputeGet one dispute in full: its status, reason, requested outcome, refund type, message thread, evidence and the disputed line items with amounts.
cjdropshipping_list_ disputable_ itemsSTEP 1 of raising a dispute: list the line items of a CJ order that are eligible for a refund/reissue claim, with their lineItemId, quantity and price.
cjdropshipping_list_ disputesList the account's disputes, optionally narrowed to one order, dispute id or store order number.
cjdropshipping_preview_ disputeSTEP 2: preview what a dispute for these line items would allow — the maximum refundable product price, postage and IOSS tax (maxProductPrice, maxPostage, maxAmount), the permitted expectResultOptionList, the resolved product details, and disputeReasonList[] { disputeReasonId, reasonName } whose id you must pass to cjdropshipping_create_dispute.
cjdropshipping_calculate_ freightCALCULATE SHIPPING OPTIONS between two countries for one or more variants — call this BEFORE creating an order, because its `logisticName` values are the only ones cjdropshipping_create_order accepts (an invented name fails with 1605001 'Logistic invalid').
cjdropshipping_calculate_ freight_ detailedPRECISE freight quote that accounts for real weight, volume, destination address and product logistics attributes — use it when cjdropshipping_calculate_freight is too coarse.
cjdropshipping_track_ shipmentTrack one or more shipments by tracking number.
cjdropshipping_get_ balanceGet the connected CJ account's prepaid wallet balance (USD).
cjdropshipping_get_ inventory_ by_ productGet stock for an ENTIRE product in one call: data.inventories[] is the product-level per-warehouse roll-up and data.variantInventories[] breaks it down per variant ({ vid, inventory[] { countryCode, totalInventory, cjInventory, factoryInventory, verifiedWarehouse, stock[] } }).
cjdropshipping_get_ inventory_ by_ skuCheck stock by SKU or SPU across every CJ warehouse.
cjdropshipping_get_ inventory_ by_ variantCheck stock for ONE variant across every CJ warehouse.
cjdropshipping_pay_ order_ from_ balancePAY a single CJ order from the account's prepaid balance.
cjdropshipping_pay_ order_ from_ balance_ v2PAY a PARENT/shipment order (V2) from the prepaid balance — the version to use after the cart flow (cjdropshipping_create_parent_order) and for private-inventory (SY) orders.
cjdropshipping_get_ settingsGet the connected CJ account's profile and API settings: openId, openName, openEmail, the daily quota limits per endpoint (setting.quotaLimits[] with quotaUrl / quotaLimit / quotaType where 0=total 1=year 2=quarter 3=month 4=day 5=hour), the account QPS limit (setting.qpsLimit), the currently configured webhook callback URLs (callback.product / .order), the account tier (root: NO_PERMISSION | GENERAL | VIP | ADMIN) and whether this is a sandbox account (isSandbox).
cjdropshipping_get_ variantGet ONE variant by its variant id (vid), optionally with live inventory.
cjdropshipping_list_ variantsList every variant (SKU) of one product without the rest of the product payload.
cjdropshipping_get_ warehouse_ detailGet one CJ warehouse's full detail by its storage id: { id, name, areaId, areaCountryCode, address1/address2, contacts, phone, city, province, logisticsBrandList: [ { id, name } ] }.
cjdropshipping_add_ orders_ to_ cartMove one or more created CJ orders into the CJ cart, the first step of the cart-based checkout flow (addCart → addCartConfirm → saveGenerateParentOrder → pay).
cjdropshipping_confirm_ orders_ in_ cartConfirm the orders currently in the CJ cart.
cjdropshipping_create_ order_ v2Create a CJ order using the older V2 endpoint.
cjdropshipping_create_ parent_ orderGenerate the payable PARENT order for a shipment (step 3 of the cart checkout flow).
cjdropshipping_sandbox_ simulate_ paymentSANDBOX ONLY: mark a sandbox order as paid without any real money moving.
cjdropshipping_sandbox_ update_ order_ statusSANDBOX ONLY: force a sandbox order into a chosen status so you can exercise downstream flows end-to-end.
cjdropshipping_sandbox_ update_ tracking_ numberSANDBOX ONLY: attach an arbitrary tracking number to a sandbox order so tracking webhooks and lookups can be tested.
cjdropshipping_update_ pod_ imagesReplace the print-on-demand artwork on order line items before production starts.
cjdropshipping_create_ sourcing_ requestAsk CJ to SOURCE a product that isn't in the CJ catalog yet: submit a name, image and (ideally) the URL of the product on another marketplace, and CJ's sourcing team quotes it.
cjdropshipping_get_ sourcing_ requestsCheck the status/result of previously submitted sourcing requests (read-only despite being a POST).
cjdropshipping_list_ product_ videosGet the marketing/demo videos attached to a CJ product (read-only despite being a POST).
cjdropshipping_private_ inventory_ add_ to_ cartAdd SKUs to the private-inventory (stock-up) cart.
cjdropshipping_private_ inventory_ confirm_ with_ costsConvenience: confirmation AND full cost breakdown in one call — the fastest way to quote a private-inventory stock-up.
cjdropshipping_private_ inventory_ create_ orderSTEP 4: CREATE the private-inventory (SY) stock-up order.
cjdropshipping_private_ inventory_ get_ cartRead the private-inventory cart.
cjdropshipping_private_ inventory_ get_ confirmationSTEP 1 of buying private inventory (stocking up): confirm a set of SKUs and get back the warehouses that can hold them — availableStorehouseList[].storageId is the value every later step needs.
cjdropshipping_private_ inventory_ get_ costsSTEP 3: price a private-inventory stock-up — product cost, freight and the integrated total for a chosen warehouse (and optionally a chosen carrier).
cjdropshipping_private_ inventory_ list_ logisticsSTEP 2: list the shipping services available for a private-inventory stock-up from a chosen warehouse.
cjdropshipping_private_ inventory_ list_ ordersList private-inventory (SY) stock-up orders with status and date filters.
cjdropshipping_private_ inventory_ remove_ from_ cartRemove SKUs from the private-inventory cart.
cjdropshipping_get_ shop_ productGet full detail (including variants and their CJ links) for up to 10 store products at once.
cjdropshipping_link_ productLINK one CJ product to one of your store products, variant by variant, so orders for that store product can be fulfilled by CJ.
cjdropshipping_list_ product_ linksList the CJ↔store product links (connections) for a shop — which CJ variant each of your store variants maps to, plus the default warehouse area and logistics chosen for it.
cjdropshipping_list_ shop_ productsPaged list of the account's store products with their CJ-link status.
cjdropshipping_outbound_ cancel_ orderCancel an unfinished outbound order and release its locked inventory.
cjdropshipping_outbound_ create_ orderSTEP 4: create (or update) a private-inventory OUTBOUND order — ship units you already own out of the CJ warehouse to a customer.
cjdropshipping_outbound_ get_ orderGet one outbound order's full detail — its address, product lines and lock state.
cjdropshipping_outbound_ get_ progressPoll the async progress of outbound-order creation/submission: inventory-lock results, lock failures, and submit/payment status.
cjdropshipping_outbound_ list_ addressesSTEP 1 of shipping stock OUT of private inventory: list the address candidates for the connected account.
cjdropshipping_outbound_ list_ productsSTEP 2: list the private-inventory units that can actually be shipped out of a warehouse.
cjdropshipping_outbound_ refresh_ productsSTEP 3 (recommended): re-check live availability for the exact lines you are about to submit, so the create call does not fail on a stale quantity.
cjdropshipping_outbound_ submit_ orderSTEP 5: submit a created outbound order for warehouse processing.
cjdropshipping_save_ shop_ productUpsert one of YOUR store's products into CJ so it can be linked to a CJ product.
cjdropshipping_save_ shop_ variantsUpsert your store's product VARIANTS into CJ in one batch.
cjdropshipping_unlink_ productRemove a CJ↔store product link.
cjdropshipping_cancel_ disputeWithdraw an open dispute.
cjdropshipping_get_ merge_ match_ progressPoll the progress of the auto-match job started by cjdropshipping_match_mergeable_orders.
cjdropshipping_get_ merge_ match_ resultRead the result of the auto-match job: the groups of orders CJ suggests merging, with their store order info and available shipping options.
cjdropshipping_get_ merge_ submit_ progressPoll the progress of the merge-submit job started by cjdropshipping_submit_merge_orders.
cjdropshipping_get_ merge_ submit_ resultRead the outcome of the merge-submit job: { successGroupCount, successOrderCount, newOrderCodeList[] (the merged order codes), failGroupCount, failOrderCount, mergeFailOrderGroupList[] { errorCode, orderCodes[] } }.
cjdropshipping_get_ warehouse_ order_ mediaFetch the warehouse's inbound photos/videos for private-inventory stock orders (proof of what physically arrived).
cjdropshipping_list_ private_ inventory_ batchesList the individual stock BATCHES behind one private-inventory SKU (each batch has its own arrival, unit price and remaining quantity).
cjdropshipping_list_ private_ inventory_ movementsPaged inventory-movement ledger for private inventory: every inbound, outbound and adjustment record for a SKU, with the business order that caused it.
cjdropshipping_list_ private_ inventory_ productsList the connected account's PRIVATE INVENTORY (stock the merchant has pre-purchased and stored in a CJ warehouse) grouped by product/SPU.
cjdropshipping_list_ private_ inventory_ skusPaged, filterable view of private-inventory SKU detail across warehouses.
cjdropshipping_list_ private_ inventory_ skus_ by_ productList the private-inventory SKUs held under one product.
cjdropshipping_match_ mergeable_ ordersASYNC step 1 of order merging: ask CJ to find orders that share a destination and can be combined into one shipment (saving postage).
cjdropshipping_submit_ merge_ ordersASYNC step 2: actually MERGE a group of orders into one combined order.
cjdropshipping_calculate_ partner_ freightFreight quote for a merchant-partner order shaped like a real order payload (full destination address + products).
cjdropshipping_get_ supplier_ logistics_ templateGet the self-shipment logistics template (the carrier options and rates a supplier ships with) for one or more SPUs.
cjdropshipping_list_ subscribed_ productsList the products currently subscribed to change notifications, optionally filtered by SPU or product id.
cjdropshipping_set_ webhooksConfigure where CJ pushes event callbacks.
cjdropshipping_subscribe_ productsSubscribe to product/stock change notifications for specific products, or for the whole catalog.
cjdropshipping_unsubscribe_ productsStop product/stock notifications for specific products.
cjdropshipping_create_ addressSave a new address to the account's address book.
cjdropshipping_get_ cogs_ order_ dataGet COGS (cost-of-goods-sold) basic data for a list of CJ order codes — the per-order product cost, shipping cost and totals used for profit reporting.
cjdropshipping_list_ addressesList the connected account's saved address book.
cjdropshipping_update_ addressUpdate a saved address.
cjdropshipping_update_ shipping_ labelReplace a previously uploaded label / tracking number on a platform-logistics order.
cjdropshipping_upload_ shipping_ labelUpload YOUR OWN carrier label + tracking number for a platform-logistics order (shopLogisticsType 1) so the CJ warehouse can ship it.
cjdropshipping_create_ makeup_ paymentCreate a payment order for selected make-up bills.
cjdropshipping_list_ makeup_ billsList outstanding MAKE-UP (supplement) bills — the extra charges CJ raises after an order ships, e.g.
cjdropshipping_update_ account_ profileUpdate the CJ developer account's display profile — the openName and openEmail shown by cjdropshipping_get_settings.
Credentials off one CJ Dropshipping screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
In My CJ, open Apps, install the API app, then Authorization → Add API, set Type to API Key and copy it. Paste it into the API Key field. No client secret, no redirect URL, and it stays locked to that CJ account.
••••••••••••3f7aRead-only stops at catalog, stock and order lookups. Full access adds writes — keep approval on so paying an order from the prepaid balance or deleting an unpaid one waits for review. Full catalog loads the rest.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your CJ Dropshipping credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Which orders shipped last week and where are those parcels now
cjdropshipping_list_ordersok
Then just ask for the work
“Which orders shipped last week and where are those parcels now”
“Move my unshipped orders headed to Germany onto a cheaper shipping service”
“Quote shipping to Canada for this hoodie, then create and pay the order”
“Which products in my Shopify store are out of stock at CJ right now”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting CJ Dropshipping behind an AI client.
One API Key. In My CJ, open Apps and install the API app if you have not already, then go to Authorization, click Add API, set Type to API Key, and copy the value into the API Key field on the connect form. There is no OAuth popup, no redirect URL and no client secret to find. PopMCP exchanges that key for a short-lived access token server-side and renews it automatically, so you never handle token refresh.
Yes. cjdropshipping_list_shops returns every storefront connected to the account with its type, marketplace, country code, currency and tracking URL template, plus a status code that separates an authorized store from one that is deactivated, expired or failed auth. It also reports each store's inventory-sync setting. The connection is locked to the single CJ account whose key you pasted, so it reaches that account's stores and nothing beyond them.
Ask it to call cjdropshipping_get_settings first. That returns the account's own limits — quotaLimits[] per endpoint with quotaUrl, quotaLimit and quotaType (hour, day, month, quarter, year or total) — along with the account QPS limit, the tier (NO_PERMISSION, GENERAL, VIP or ADMIN) and an isSandbox flag if the key belongs to a sandbox account. For bulk work, cjdropshipping_get_orders_batch pulls up to 100 order details in a single call instead of looping cjdropshipping_get_order.
CJ only accepts logistics names it issued for that exact route and set of variants. Run cjdropshipping_calculate_freight first — its logisticName values are the only ones cjdropshipping_create_order will take, and anything invented comes back as error 1605001. If the coarse quote is not precise enough for real weight, volume and destination address, use cjdropshipping_calculate_freight_detailed instead. Also note that cjdropshipping_create_order is the current V3 endpoint; cjdropshipping_create_order_v2 is the older one and only worth using if you are deliberately staying on V2.
Only if you let it. Paying is a write: cjdropshipping_pay_order_from_balance draws a single order from the prepaid wallet, and cjdropshipping_pay_order_from_balance_v2 covers parent/shipment orders after the cart flow and private-inventory (SY) orders. Read-only mode blocks both and leaves cjdropshipping_get_balance to check the wallet; with full access, approval-required-for-writes holds each payment until you say yes. The Extra payment requested webhook also fires when CJ asks for a top-up on an order, so a surprise charge surfaces before it is paid.
Yes, in the three steps CJ's dispute API expects. cjdropshipping_list_disputable_items shows which line items on an order are eligible with their lineItemId, quantity and price; cjdropshipping_preview_dispute returns the maximum refundable product price, postage and IOSS tax, the permitted outcome options, and the disputeReasonList whose disputeReasonId you must pass on; then cjdropshipping_create_dispute opens the claim. After that, cjdropshipping_list_disputes and cjdropshipping_get_dispute track status, the message thread and evidence, and the Dispute opened trigger tells you when a new claim lands.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 100 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 37-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 100 here. A trigger is something PopMCP watches for you: 14 CJ Dropshipping events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into CJ Dropshipping.
Launch a hosted MCP endpoint for CJ Dropshipping, keep tool access under control, and start testing real workflow prompts right away.