100+ integrations are ready to connect to your AI.Connect your first MCP

CJ Dropshipping MCP server for your AI

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

Which orders shipped last week and where are those parcels now

Supported CJ Dropshipping tools

Every catalog, order, inventory, logistics, dispute and store operation the connection exposes, plus the events your agent can watch.

cjdropshipping_change_order_logistics

Change an existing order's shipping service.

cjdropshipping_change_order_warehouse

Re-assign an unshipped CJ order to a different CJ warehouse (e.g.

cjdropshipping_confirm_order

Confirm a created CJ order so it moves into the payment/fulfilment flow.

cjdropshipping_create_order

CREATE A CJ FULFILMENT ORDER (V3 — the current version; use this one).

cjdropshipping_delete_order

DELETE an unpaid CJ order.

cjdropshipping_get_order

Get 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_batch

Fetch 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_delivery

Get carrier proof-of-delivery evidence (e.g.

cjdropshipping_list_order_logistics_options

List the shipping services an EXISTING order can switch to, with price and transit time.

cjdropshipping_list_orders

List the connected account's CJ orders, newest first, with optional status and payment-date filters.

cjdropshipping_add_to_my_product

Add 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_product

Get ONE product in full, including every variant and its per-country stock — the tool to call before ordering.

cjdropshipping_list_categories

List CJ's full three-level product category tree.

cjdropshipping_list_global_warehouses

List every CJ global warehouse available for sourcing/shipping: [ { areaId, areaEn (e.g.

cjdropshipping_list_my_products

List the products the connected account has added to "My Products" in CJ.

cjdropshipping_list_product_reviews

List buyer reviews for one CJ product.

cjdropshipping_list_products

List CJ catalog products with structured filters.

cjdropshipping_search_products

SEARCH the CJ product catalog (V2, Elasticsearch-backed) — the best tool for "find me products like X".

cjdropshipping_list_shops

List 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_dispute

STEP 3: OPEN a dispute (refund or reissue claim) on a CJ order.

cjdropshipping_get_dispute

Get one dispute in full: its status, reason, requested outcome, refund type, message thread, evidence and the disputed line items with amounts.

cjdropshipping_list_disputable_items

STEP 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_disputes

List the account's disputes, optionally narrowed to one order, dispute id or store order number.

cjdropshipping_preview_dispute

STEP 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_freight

CALCULATE 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_detailed

PRECISE 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_shipment

Track one or more shipments by tracking number.

cjdropshipping_get_balance

Get the connected CJ account's prepaid wallet balance (USD).

cjdropshipping_get_inventory_by_product

Get 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_sku

Check stock by SKU or SPU across every CJ warehouse.

cjdropshipping_get_inventory_by_variant

Check stock for ONE variant across every CJ warehouse.

cjdropshipping_pay_order_from_balance

PAY a single CJ order from the account's prepaid balance.

cjdropshipping_pay_order_from_balance_v2

PAY 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_settings

Get 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_variant

Get ONE variant by its variant id (vid), optionally with live inventory.

cjdropshipping_list_variants

List every variant (SKU) of one product without the rest of the product payload.

cjdropshipping_get_warehouse_detail

Get 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_cart

Move 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_cart

Confirm the orders currently in the CJ cart.

cjdropshipping_create_order_v2

Create a CJ order using the older V2 endpoint.

cjdropshipping_create_parent_order

Generate the payable PARENT order for a shipment (step 3 of the cart checkout flow).

cjdropshipping_sandbox_simulate_payment

SANDBOX ONLY: mark a sandbox order as paid without any real money moving.

cjdropshipping_sandbox_update_order_status

SANDBOX ONLY: force a sandbox order into a chosen status so you can exercise downstream flows end-to-end.

cjdropshipping_sandbox_update_tracking_number

SANDBOX ONLY: attach an arbitrary tracking number to a sandbox order so tracking webhooks and lookups can be tested.

cjdropshipping_update_pod_images

Replace the print-on-demand artwork on order line items before production starts.

cjdropshipping_create_sourcing_request

Ask 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_requests

Check the status/result of previously submitted sourcing requests (read-only despite being a POST).

cjdropshipping_list_product_videos

Get the marketing/demo videos attached to a CJ product (read-only despite being a POST).

cjdropshipping_private_inventory_add_to_cart

Add SKUs to the private-inventory (stock-up) cart.

cjdropshipping_private_inventory_confirm_with_costs

Convenience: confirmation AND full cost breakdown in one call — the fastest way to quote a private-inventory stock-up.

cjdropshipping_private_inventory_create_order

STEP 4: CREATE the private-inventory (SY) stock-up order.

cjdropshipping_private_inventory_get_cart

Read the private-inventory cart.

cjdropshipping_private_inventory_get_confirmation

STEP 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_costs

STEP 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_logistics

STEP 2: list the shipping services available for a private-inventory stock-up from a chosen warehouse.

cjdropshipping_private_inventory_list_orders

List private-inventory (SY) stock-up orders with status and date filters.

cjdropshipping_private_inventory_remove_from_cart

Remove SKUs from the private-inventory cart.

cjdropshipping_get_shop_product

Get full detail (including variants and their CJ links) for up to 10 store products at once.

cjdropshipping_link_product

LINK 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_links

List 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_products

Paged list of the account's store products with their CJ-link status.

cjdropshipping_outbound_cancel_order

Cancel an unfinished outbound order and release its locked inventory.

cjdropshipping_outbound_create_order

STEP 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_order

Get one outbound order's full detail — its address, product lines and lock state.

cjdropshipping_outbound_get_progress

Poll the async progress of outbound-order creation/submission: inventory-lock results, lock failures, and submit/payment status.

cjdropshipping_outbound_list_addresses

STEP 1 of shipping stock OUT of private inventory: list the address candidates for the connected account.

cjdropshipping_outbound_list_products

STEP 2: list the private-inventory units that can actually be shipped out of a warehouse.

cjdropshipping_outbound_refresh_products

STEP 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_order

STEP 5: submit a created outbound order for warehouse processing.

cjdropshipping_save_shop_product

Upsert one of YOUR store's products into CJ so it can be linked to a CJ product.

cjdropshipping_save_shop_variants

Upsert your store's product VARIANTS into CJ in one batch.

cjdropshipping_unlink_product

Remove a CJ↔store product link.

cjdropshipping_cancel_dispute

Withdraw an open dispute.

cjdropshipping_get_merge_match_progress

Poll the progress of the auto-match job started by cjdropshipping_match_mergeable_orders.

cjdropshipping_get_merge_match_result

Read 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_progress

Poll the progress of the merge-submit job started by cjdropshipping_submit_merge_orders.

cjdropshipping_get_merge_submit_result

Read the outcome of the merge-submit job: { successGroupCount, successOrderCount, newOrderCodeList[] (the merged order codes), failGroupCount, failOrderCount, mergeFailOrderGroupList[] { errorCode, orderCodes[] } }.

cjdropshipping_get_warehouse_order_media

Fetch the warehouse's inbound photos/videos for private-inventory stock orders (proof of what physically arrived).

cjdropshipping_list_private_inventory_batches

List the individual stock BATCHES behind one private-inventory SKU (each batch has its own arrival, unit price and remaining quantity).

cjdropshipping_list_private_inventory_movements

Paged 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_products

List 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_skus

Paged, filterable view of private-inventory SKU detail across warehouses.

cjdropshipping_list_private_inventory_skus_by_product

List the private-inventory SKUs held under one product.

cjdropshipping_match_mergeable_orders

ASYNC 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_orders

ASYNC step 2: actually MERGE a group of orders into one combined order.

cjdropshipping_calculate_partner_freight

Freight quote for a merchant-partner order shaped like a real order payload (full destination address + products).

cjdropshipping_get_supplier_logistics_template

Get the self-shipment logistics template (the carrier options and rates a supplier ships with) for one or more SPUs.

cjdropshipping_list_subscribed_products

List the products currently subscribed to change notifications, optionally filtered by SPU or product id.

cjdropshipping_set_webhooks

Configure where CJ pushes event callbacks.

cjdropshipping_subscribe_products

Subscribe to product/stock change notifications for specific products, or for the whole catalog.

cjdropshipping_unsubscribe_products

Stop product/stock notifications for specific products.

cjdropshipping_create_address

Save a new address to the account's address book.

cjdropshipping_get_cogs_order_data

Get 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_addresses

List the connected account's saved address book.

cjdropshipping_update_address

Update a saved address.

cjdropshipping_update_shipping_label

Replace a previously uploaded label / tracking number on a platform-logistics order.

cjdropshipping_upload_shipping_label

Upload YOUR OWN carrier label + tracking number for a platform-logistics order (shopLogisticsType 1) so the CJ warehouse can ship it.

cjdropshipping_create_makeup_payment

Create a payment order for selected make-up bills.

cjdropshipping_list_makeup_bills

List outstanding MAKE-UP (supplement) bills — the extra charges CJ raises after an order ships, e.g.

cjdropshipping_update_account_profile

Update the CJ developer account's display profile — the openName and openEmail shown by cjdropshipping_get_settings.

Connect CJ Dropshipping to your AI

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.

API Key••••••••••••3f7a
ConnectionVerified

Then just ask for the work

  • Which orders shipped last week and where are those parcels now

    • list_orders
    • get_orders_batch
    • track_shipment
  • Move my unshipped orders headed to Germany onto a cheaper shipping service

    • list_orders
    • list_order_logistics_options
    • change_order_logistics
  • Quote shipping to Canada for this hoodie, then create and pay the order

    • calculate_freight
    • create_order
    • pay_order_from_balance
  • Which products in my Shopify store are out of stock at CJ right now

    • list_shops
    • list_my_products
    • get_inventory_by_product

Use CJ Dropshipping from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

CJ Dropshipping MCP server questions

What teams ask before putting CJ Dropshipping behind an AI client.

What do I need from CJ Dropshipping to connect?

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.

Can it see the Shopify, eBay and TikTok stores linked to my CJ account?

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.

How does the agent stay inside CJ's API quotas?

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.

Why do my order creations fail with 'Logistic invalid'?

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.

Can the agent actually spend money from my CJ balance?

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.

Can it handle a refund or reissue claim end to end?

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.

Do I have to run or host the CJ Dropshipping MCP server myself?

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.

Which AI clients can use this MCP server?

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.

Why do only 37 of the 100 tools load by default?

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.

What is the difference between a tool and a trigger?

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.

Connect CJ Dropshipping to your AI in minutes

Launch a hosted MCP endpoint for CJ Dropshipping, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP