jumia-vendor-center
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JUMIA_SHOP_ID | No | The Jumia shop identifier. Overrides the default. | |
| JUMIA_AUDIT_LOG | No | Path to the append-only JSONL audit log file. Defaults to ./data/audit.log. | ./data/audit.log |
| JUMIA_CLIENT_ID | No | Your Jumia Vendor Center Self Authorization application Client ID. Used as an override when not using the interactive setup flow. | |
| JUMIA_API_BASE_URL | No | Base URL for the Jumia Vendor Center API. Overrides the default. | |
| JUMIA_AUTH_BASE_URL | No | Base URL for the Jumia authentication service. Overrides the default. | |
| JUMIA_REFRESH_TOKEN | No | The Refresh Token for your Jumia Vendor Center application. Used as an override when not using the interactive setup flow. Treat as a secret. | |
| JUMIA_RATE_LIMIT_RPM | No | API request rate limit in requests per minute. Defaults to 200. | 200 |
| JUMIA_RATE_LIMIT_RPS | No | API request rate limit in requests per second. Defaults to 4. | 4 |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_shopsA | List every shop under the authenticated Vendor Center account. |
| list_brandsA | List brand codes/names known to the catalog (paginated). |
| list_categoriesA | List categories. Each category includes |
| get_attribute_setA | List the attributes (required or not, allowed values/options, validation rules) for a category's attribute set. Get |
| find_outdated_productsA | Scan the catalog for products that look outdated: QC-rejected and never fixed, ACTIVE with zero stock for a long time, or ACTIVE and untouched for a very long time. This is a HEURISTIC - the Vendor Center API has no "outdated" concept - so treat the result as a review list, not an automatic deletion queue. Nothing is changed by calling this; pair it with deactivate_products() after a human (or you, deliberately) has looked at the list. Returns {scanned, flagged: [{listing, reasons}], truncated}. Each |
| deactivate_productsA | The closest thing to "removing" a product from Jumia: sets status to INACTIVE per business client. THIS DOES NOT DELETE THE LISTING - there is no delete endpoint in the published API; INACTIVE just makes it unsellable/hidden. If you actually need a listing permanently gone, that's a request to your Jumia account manager, not something this tool (or any seller-facing API call) can do.
Logs every call to the local audit log before returning. |
| create_productsA | Create new products (async feed). Poll the returned feedId with get_feed_status() until status is COMPLETED, then call it again (or list_products by sellerSku) to learn each product's real productSid and QC status - both are required before you can update stock, price or status on a newly-created product. Each item in Before calling this for a real-world branded product, SEARCH for the manufacturer's actual spec sheet, description copy, and product image URLs (their regional store site) rather than inventing name/description/spec/image content - Jumia's own content guidelines expect accurate listings, and a fabricated spec (wrong wattage, invented weight, wrong included accessories) risks a QC rejection or a listing that doesn't match what ships. If the manufacturer's site blocks a plain fetch (403), a real browser session (e.g. claude-in-chrome) often gets through where a headless fetch doesn't. Only fields you truly cannot find published anywhere (e.g. shipping weight) should be flagged to the user as an unverified estimate rather than silently guessed. Cap ~1000 products per call - this tool does not auto-chunk larger lists for you (chunk them yourself and call this repeatedly, tracking each feedId, so a failure in batch 6 doesn't force you to redo 1-5). |
| update_productsA | Update the MUTABLE subset of product fields (async feed): additional category, brand, config attributes, GTIN barcode, simple attributes, variation. This CANNOT change the main image, main category, parent SKU, price, or initial stock - use update_price / update_stock for price and stock, and be aware main image/category/parent SKU aren't changeable via this API at all once a product is created. Each item needs the product's |
| update_priceB | Update price (async feed). Each item: {"sellerSku", "id", "category", "price": {"currency", "value", "salePrice": {"value","startAt","endAt"}}, "businessClients": [...]}. To clear a sale price, send salePrice's value/startAt/endAt as null rather than omitting salePrice entirely. |
| update_stockA | Update stock (async feed). Each item: {"sellerSku", "id", "stock"}. |
| get_feed_statusA | Poll an async feed (returned by create_products/update_products/update_price/update_stock/deactivate_products) until status is COMPLETED or FAILED. For a PRODUCT_CREATION feed, this is also where you get each new product's productSid and QC status. |
| sync_productsA | Reconcile your source of truth (an ERP export, a spreadsheet you've already parsed to JSON, etc) against what's live on Jumia right now, and push only the fields that actually changed - instead of you hand-writing separate create/update/price/stock calls.
Looks up each sellerSku via list_products, diffs against Returns {matched, not_found: [sellerSku...], plan: {price: [...], stock: [...], status: [...]}, feed_ids: {...} (only when dry_run=false)}. |
| list_productsB | One page of GET /catalog/products with the documented filters. Use |
| get_stockC | One page of GET /catalog/stock. |
| find_duplicate_productsA | Flag products that look like the same real-world item listed more than once: exact GTIN/EAN/barcode match, or same brand+category+images with a near-identical name. Jumia's seller API has NO merge endpoint, so this only reports clusters with a suggested canonical listing (live somewhere - ACTIVE + QC APPROVED on any business client - then oldest wins) - resolving it means you decide, then call deactivate_products() on the ones you're dropping. Narrow with |
| list_ordersA | One page of GET /orders. |
| get_order_itemsC | GET /orders/items for a specific order. |
| cancel_order_itemsA | Cancel one or more order items. Requires the VC - Order Manager role on the calling application/user. No cancellation-reason field exists in this endpoint's schema - the audit log records who/when this tool was called, but not a business reason, so capture that elsewhere if you need it for SLA reporting. |
| get_shipment_providersA | List shipment providers available for an order item, including whether each requires a caller-supplied tracking code (use pack_orders_v2 if so). |
| pack_ordersA | Pack order items (v1). |
| pack_orders_v2A | Pack order items (v2) - required when the shipment provider needs a caller-supplied tracking code. |
| mark_ready_to_shipB | Mark packed order items ready to ship. |
| print_shipping_labelsA | Get printable shipping labels for order items. Returns success.labels[] with a |
| create_consignmentA | Create a consignment (inbound stock shipment to a Jumia warehouse). |
| update_consignmentC | Update a consignment's shipping status. Dates are 'yyyy-MM-dd'. |
| get_consignment_stockB | Check received/quarantined/defective/canceled/returned/failed counts for stock sent to a Jumia warehouse. |
| get_payout_statementsB | List payout statements (for reconciling what Jumia has paid out against your own books). NOT financial/tax advice - just the raw statement data. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Most tools map cleanly to distinct resource+action pairs, with the update_products/update_price/update_stock boundaries explicitly carved out. The main overlap risk is pack_orders vs pack_orders_v2, though the versioned descriptions and get_shipment_providers guidance largely disambiguate them. The two find_* heuristic tools share a style but target clearly different outcomes (duplicates vs outdated).
The set follows a strong snake_case verb_noun convention throughout (list_*, get_*, create_*, update_*, find_*, deactivate_*). Minor deviations include the pack_orders_v2 version suffix and an inconsistent get_/list_ split between similar read operations (list_orders vs get_order_items). Overall the pattern is predictable enough for an agent to guess tool names.
At 27 tools the server is on the heavy side, but it spans multiple distinct sub-domains — product catalog, order fulfillment, consignments, and payouts — making the per-domain count reasonable. Each tool earns its place with a genuine distinct operation rather than redundant variants, aside from the pack_orders v1/v2 pair.
Product lifecycle coverage is strong: create, list, update mutable fields, update price/stock, deactivate, plus duplicate/outdated heuristics and a sync orchestration tool. Order fulfillment covers pack, label, ready-to-ship, and cancel, but there is no returns/refunds surface. Consignment support has create/update/stock-check but no way to list or fetch a single consignment, a workable minor gap.