Dropshipping MCP Dsers
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DSERS_ENV | No | API environment: production (default) or test | |
| DSERS_TOKEN | Yes | DSers session token (from 'npx @lofder/dsers-mcp-product login') | |
| DSERS_BASE_URL | No | Override API base URL | |
| IMPORT_MCP_STATE_DIR | No | Override job state directory |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dsers_store_discoverA | Retrieve available stores and supported rules for the connected DSers account. Call this first — the response contains store IDs and configuration needed by all subsequent operations. Returns: stores (each with id, name, platform, ship[]), rules (pricing modes, content, images). ae_expired means AliExpress re-authorization is needed but does NOT block imports — proceed normally. plan_issue only appears if the DSers subscription has a real problem (expired, suspended). After calling this tool, proceed to the next step (import, preview, etc.) — do NOT retry discover. |
| dsers_rules_validateA | Check and normalize a rules object against the provider's capabilities before importing. Use this to verify pricing, content, and image rules are valid and see exactly which ones will be applied. Returns: effective_rules_snapshot (what will actually be applied), warnings (adjustments made), errors (blocking issues that must be fixed before calling dsers_product_import). Extreme pricing values (multiplier >100x, fixed_markup >$500, fixed_price >$10,000) produce warnings. HTML description fields are validated against script injection. |
| dsers_product_importA | Import product(s) from supplier URL(s) into the DSers import list and return a preview. Supports AliExpress, Alibaba, and Accio.com URLs. Provide source_url (single) or source_urls_json (batch). Optionally apply rules at import time via rules_json or flat params. EXPIRED/LOST JOB_ID: Re-import with source_url — DSers finds the existing draft (no duplicate). To UPDATE rules on an existing import, use dsers_product_update_rules instead. SINGLE RESPONSE: compact preview with all variants [name, sell, qty], price_summary, active_rules. BATCH RESPONSE: summary mode (default) returns job_id + key metadata per product (~100 tokens each). Use batch_detail='full' for complete previews. Use dsers_product_preview for individual details. |
| dsers_product_previewA | Reload preview for an import job. Two modes: compact (default) returns [name, sell, qty] for ALL variants — lightweight. full returns [name, sell, compare_at, cost, qty, supplier_qty] for 3 variants by default. Always includes price_summary: {sell:{min,max}, cost:{min,max}, zero_stock_count, low_stock_count, variants_count}. Key fields: sell_price (store listing price, $), cost (supplier price, $), compare_at_price (strikethrough, $). options: array of {name, values[], values_count} — values truncated to 10 by default, set show_all_options=true for full list. active_rules: currently applied rules (always present, {} if none). Use variant_detail='full' when agent needs compare_at or cost columns. Set include_images=true to add per-variant image_url and per-option-value imgUrl — useful for visual SKU matching across suppliers. |
| dsers_product_update_rulesA | Update pricing, content, images, or variant rules on an already-imported product. Rules are merged incrementally: pricing/images/variant_overrides replace by family; content merges by field (set title_prefix without losing description). To clear a content field, send it as empty string or null (e.g. title_prefix:''). To remove an entire family, pass null (e.g. rules_json='{"pricing":null}'). option_edits are always fully replaced (ordered operations, not mergeable). OPTION_EDITS actions: rename_option {action,option_name,new_name} — rename e.g. Color→Style. rename_value {action,option_name,value_name,new_name} — rename a value within an option. remove_value {action,option_name,value_name} — remove value and DELETE all variants with that value. remove_option {action,option_name} — remove entire option dimension. RESPONSE: compact preview with active_rules showing all currently applied rules. If rule persistence to DSers backend fails, job status is set to persist_failed and subsequent push will be blocked. Retry the rule update or re-import the product. |
| dsers_product_visibilityA | Change the visibility mode of a prepared job before pushing it to the store. Call this between dsers_product_import and dsers_store_push to switch between draft and published. Returns: job_id, status, visibility_mode. |
| dsers_store_pushA | Push one or more prepared import drafts to the connected Shopify or Wix store(s). SAFETY: Automatic pre-push validation checks pricing (blocks if sell price < cost or $0) and stock (blocks if all variants have zero inventory). Warnings are raised for low margin (<10%), low stock (<5 units), or very low price (<$1). If blocked, fix pricing rules or use force_push=true ONLY after explaining the risk to the user. Three modes: (1) Single push — provide job_id + target_store. (2) Batch push — provide job_ids_json with an array of job IDs or objects; takes priority over job_id. (3) Multi-store push — provide job_id + target_stores_json to push one product to multiple stores. SAFETY RESPONSE: If checks fail, response includes 'blocked' (array of reasons push was rejected — must fix before retrying) and/or 'warnings' (array of risk alerts — push proceeds but user should be informed). blocked = hard stop (e.g. sell below cost), warnings = soft alert (e.g. low margin). On success, returns per-job: job_id, status, target_store, visibility_applied, push_options_applied, job_summary, warnings. |
| dsers_job_statusA | Check the current status of an import or push job. Status lifecycle: preview_ready → push_requested → completed or failed. Returns: job_id, status, target_store, push_status (if pushed), warnings. |
| dsers_product_deleteA | Permanently delete a product from the DSers import list. IRREVERSIBLE — the product cannot be recovered after deletion. Requires explicit confirmation (confirm=true) to execute. If called without confirm=true, returns a confirmation prompt — show this to the user. SCOPE: Only removes the product from DSers import list (pre-push staging area). Products already pushed to Shopify/Wix stores are NOT affected — to remove a store listing, use the Shopify/Wix admin directly. BUSINESS CONTEXT: Deleting from import list means losing the supplier mapping (link between the store product and the AliExpress/Alibaba supplier). If the user wants to re-import later, they will need the original supplier URL. AGENT PROTOCOL: Before calling with confirm=true, always: 1) Show the user the product title and supplier URL. 2) Warn that this cannot be undone. 3) Get explicit user consent (e.g. 'yes, delete it'). Never set confirm=true without the user's explicit approval. |
| dsers_import_listA | Browse the DSers import list with enriched variant data. Returns per item: import_item_id, title, image, sell_price_range, cost_range, currency, variant_count, total_stock, push_status, supplier, source_url, tags. no_markup=true when sell equals cost (no pricing rule applied). low_stock_warning counts variants with stock <= 5. Use import_item_id with dsers_product_preview for full details or dsers_product_delete to remove. This is the staging area before push. To see products already on your store, use dsers_my_products. To search for new products, use dsers_find_product. Note: DSers API returns a minimum of 20 items per page. If page_size < 20, results are truncated client-side. |
| dsers_my_productsA | Browse products already pushed to a store. Requires store_id (from dsers_store_discover). Returns compact items with: dsers_product_id, title, image, sell_price (min/max in $), cost (min/max in $), status (Draft/Active), supplier, supplier_url. Prices are in dollars (converted from cents). Shows products already pushed to a specific store. To see products waiting to be pushed, use dsers_import_list. Note: DSers API returns a minimum of 20 items per page. If page_size < 20, results are truncated client-side. |
| dsers_find_productA | Search the DSers product pool (AliExpress supplier catalog) for products to import by keyword or by image URL (visual search). Returns products that can be directly imported via dsers_product_import using the import_url field. Use search_after from the response to get the next page of results. Results include import_url for direct use with dsers_product_import. After importing, use dsers_import_list to browse, then dsers_store_push to push. Note: results may overlap between pages — deduplicate by product_id if needed. Empty or whitespace-only keywords are rejected. When results exceed the limit (especially for image search), response includes truncated_from showing the original count before truncation. |
| dsers_sku_remapA | Replace the supplier on a store product with SKU-level variant matching. DEFAULTS TO mode='preview' which is read-only and safe to call without confirmation — only mode='apply' actually writes to DSers. TWO discovery paths: (A) STRICT — caller provides new_supplier_url and the tool swaps to that exact supplier; (B) DISCOVER — omit new_supplier_url and the tool reverse-image-searches the DSers pool using seed images from the current product, ranks candidates via sku-matcher + multi-factor scoring, and auto-picks the best replacement. Use discover mode when the current supplier is broken/out-of-stock and you don't have a specific replacement URL in hand. WORKFLOW: (1) Call with mode='preview' to see the match plan, scoreBreakdown, tier-isolated top_candidates and the planned pool[] history additions — nothing is written. (2) Review the diffs, then call again with mode='apply' and the same params to persist. auto_confidence threshold defaults to 70 (conservative). Lower at your own risk — DSers does NOT validate supplier payload correctness; data errors only surface at order fulfillment time. Returns: path (A_strict or B_discover), summary (swapped/kept_old/unmatched/skipped counts), mapping_type, diffs (per-variant decision + before/after), discovery.top_candidates (discover mode only), pool_additions (PoolEntry[] that apply will append to mapping.pool[] as history), warnings, errors. When applied: also returns process_status from DSers post-write polling. Requires the product:mapping OAuth scope. Get store_id from dsers_store_discover first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| dsers_workflow_quick-import | Quick product import workflow — import a single AliExpress, Alibaba, or Accio.com product and push it to your Shopify or Wix store as a draft. |
| dsers_workflow_bulk-import | Bulk import multiple products with a pricing multiplier — import several supplier URLs at once and apply a price markup before pushing to your store. |
| dsers_workflow_multi-push | Push one product to all connected Shopify and Wix stores at once — useful for sellers managing multiple storefronts. |
| dsers_workflow_seo-optimize | Import a product, use your LLM capabilities to rewrite the title and description for SEO, then push the optimized listing to the store. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lofder/dsers-mcp-product'
If you have feedback or need assistance with the MCP directory API, please join our Discord server