kiotviet-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kiotviet-mcpWhat products are running low?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kiotviet-mcp
A voice-first Model Context Protocol server for shops that run on KiotViet, the POS used by a very large number of Vietnamese grocery and convenience stores.
It lets any MCP client (Alexa+, Claude, IDE agents, your own Bedrock agent) answer a shop owner's questions in one spoken sentence:
"What's running low?"
"How many cartons of milk do we have?"
"How were sales yesterday?"
"What sold best this week?"
"What should I reorder?" → "Draft it." → "Yes, send it."
Every tool returns two things:
content[0].text: a sentence written to be spoken, at most 35 words, with rounded numbers and units, and never more than 3 list items read aloud.structuredContent: data that matches the tool's declaredoutputSchema.
Tools carry MCP annotations (readOnlyHint, destructiveHint, idempotentHint).
It was extracted from ShopVoice, the Alexa+ MCP project in vansyson1308/groceryclaw, built for the Build, Ship, Shape Amazon Developer Hackathon. This package has no GroceryClaw dependencies: it talks to the KiotViet Public API directly.
Tools
Tool | Type | What it does |
| read | Products at or below KiotViet |
| read | On hand plus days of cover for a product name, product code or barcode; asks which one when several match |
| read | Today, yesterday, the last 7 days or the last 28 days, against the previous equal period (same weekday last week for single days) |
| read | Top or bottom sellers by units |
| read | (lead time + cover days) × forecast − on hand |
| write, not destructive | Drafts a purchase order and returns a |
| write, destructive, idempotent | Sends the draft to KiotViet ( |
It also exposes a resource, shop://profile. Start with --read-only to hide the two purchase-order tools entirely.
Related MCP server: store-ops-mcp
Quick start
npm install
npm run build
# Try it without KiotViet credentials (built-in demo shop), over stdio:
node dist/cli.js --demo
# Real shop:
export KIOTVIET_CLIENT_ID=... KIOTVIET_CLIENT_SECRET=... KIOTVIET_RETAILER=your-retailer
export KIOTVIET_BRANCH_ID=12345 # optional, used for purchase orders
node dist/cli.js # stdio
KIOTVIET_MCP_TOKEN=$(openssl rand -hex 24) node dist/cli.js --http 8787 # Streamable HTTP on 127.0.0.1:8787/mcpClaude Desktop / any stdio client
{
"mcpServers": {
"kiotviet": {
"command": "node",
"args": ["/path/to/kiotviet-mcp/dist/cli.js", "--read-only"],
"env": { "KIOTVIET_CLIENT_ID": "...", "KIOTVIET_CLIENT_SECRET": "...", "KIOTVIET_RETAILER": "..." }
}
}
}Inspect it
npx @modelcontextprotocol/inspector@2.8.0 --cli node dist/cli.js -e KIOTVIET_MCP_DEMO=1 --method tools/listHow it uses the KiotViet Public API
Auth:
POST https://id.kiotviet.vn/connect/token(client credentials, scopePublicApi.Access). The token is cached until shortly before it expires, and every call sendsAuthorization: Bearer …plus theRetailerheader.Products:
GET /products?includeInventory=true(paged by 100). On hand is summed across branches (onHand − reserved), and the minimum stock comes fromminQuantity.Sales:
GET /invoices?fromPurchaseDate=…&toPurchaseDate=…for the last 28 days, aggregated frominvoiceDetailsby product code. Cancelled invoices are skipped.Purchase orders:
POST /purchaseorders, and only fromconfirm_purchase_order.
Responses are read defensively, so missing fields fall back to safe defaults. A snapshot is cached for 60 seconds to stay within API rate limits.
Safety
Two-step writes. The draft token is random (96 bits), stored only as a SHA-256 hash, expires after 5 minutes, and confirming twice sends nothing new.
The HTTP mode binds to
127.0.0.1, requires a bearer token (compared in constant time), and rejects non-loopback browserOrigins, which protects against DNS rebinding.KiotViet credentials are read from the environment only and never logged.
Development
npm test # builds, then runs node:test against a fake KiotViet API and the demo shopPinned: @modelcontextprotocol/sdk 1.30.1 (MCP protocol 2025-11-25), zod 4.6.5, Node ≥ 20.
License
MIT, see LICENSE.
Available Tools
7 toolsconfirm_purchase_orderSend the purchase order (step 2 of 2)ADestructiveIdempotent
Sends the drafted purchase order to KiotViet (POST /purchaseorders). Requires the confirmation_token from create_purchase_order_draft; expires after 5 minutes. Call only after the user explicitly confirms.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| kiotviet_code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is not read-only and is destructive/idempotent. The description adds useful behavioral context: the token expires in 5 minutes and the call must follow explicit user confirmation, which clarifies the irreversible nature implied by destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The primary action is stated first, then the prerequisite and timing constraint, then the user-confirmation requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, a clear prerequisite, expiration semantics, explicit user-confirmation condition, and an output schema present, the description covers everything needed to invoke this correctly alongside its sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides the token's type and length, with 0% description coverage. The description compensates by explaining that confirmation_token comes from create_purchase_order_draft and expires after 5 minutes, giving the parameter meaningful operational context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Sends') with a clear resource ('drafted purchase order') and even cites the endpoint (POST /purchaseorders). The title explicitly labels it 'step 2 of 2', distinguishing it from create_purchase_order_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to call it ('only after the user explicitly confirms'), what prerequisite is required (confirmation_token from create_purchase_order_draft), and adds a time constraint (expires after 5 minutes). This gives an agent actionable go/no-go conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_purchase_order_draftDraft a purchase order (step 1 of 2)A
Drafts a KiotViet purchase order from the current suggestions (or the given product codes) and returns a confirmation_token valid for 5 minutes. Nothing is sent to KiotViet until confirm_purchase_order is called after the user says yes.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| est_total | Yes | |
| confirmation_token | Yes | |
| expires_in_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only state that the operation is not read-only and not destructive, but the description adds crucial behavioral detail: the action is a draft only, nothing reaches KiotViet until confirmation, and the returned confirmation_token expires in 5 minutes. This transient-token and two-step commit context is exactly what an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads the action and result; the second sentence states the critical non-effect of not sending the order until confirmation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-param draft tool with an output schema and non-destructive annotations, it covers token expiry, the two-step confirmation flow, and how item input is sourced. A minor gap is what happens when neither suggestions nor items are available, but this does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates meaningfully by explaining that the tool can use 'current suggestions' when no items are given, or can take given product codes as an override. It does not fully describe qty semantics, but the param names and constraints already convey most of that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Drafts'), a specific resource ('KiotViet purchase order'), and the workflow position ('step 1 of 2'). It also clearly distinguishes this from the sibling confirm_purchase_order by stating that nothing is sent until that later step is called.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes this tool as the first step in a two-step flow and explains that confirm_purchase_order must follow only after the user approves. It does not explicitly list when not to use it or compare against other siblings, but the workflow context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_low_stockWhat is running lowARead-onlyIdempotent
Products at or below their KiotViet minimum stock (minQuantity), most urgent first by days of cover.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total_low | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavioral context beyond those annotations by defining the threshold (minQuantity) and the urgency ordering (days of cover), which helps the agent understand what results to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core behavior and ordering with no filler. Every word contributes to the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a rich annotation set, and an output schema present, the description fully covers what the tool does and how results are ordered. Nothing essential for invoking or interpreting the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there is no parameter burden for the description to carry. The mention of minQuantity is domain context rather than a parameter explanation, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (products), the filter (at or below KiotViet minimum stock/minQuantity), and the ordering (most urgent first by days of cover). This distinguishes it from sibling tools like get_stock_level and get_top_movers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the agent should use this when it needs products at or below minimum stock, sorted by urgency. However, it does not explicitly contrast with alternatives such as get_stock_level or suggest_reorder, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sales_summarySales summaryARead-onlyIdempotent
Revenue and units for today, yesterday, the last 7 days or the last 28 days, compared with the previous equal period (same weekday last week for single days).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | today |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| units | Yes | |
| period | Yes | |
| revenue | Yes | |
| change_pct | Yes | |
| previous_revenue | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds valuable behavioral detail about the comparison logic (same weekday last week for single days), which is not captured elsewhere. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler. It front-loads the core output (revenue and units) and immediately clarifies the period options and comparison logic, making every word earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, clear enum values, output schema presence, and annotations covering safety, the description provides all necessary context for an agent to call the tool correctly. It explains the comparison methodology, which is the only non-obvious aspect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly lists all enum values (today, yesterday, last_7_days, last_28_days) and explains their meaning via the comparison context. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns revenue and units for specified periods, with a comparison to the previous equal period. This is a specific verb+resource and is clearly distinct from sibling tools about stock and reorders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what data it returns (sales revenue and units) and the available periods. While it does not explicitly name alternatives or exclusions, the sibling tools are all in the stock/reorder domain, making the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_levelStock level for one productARead-onlyIdempotent
On-hand quantity and days of cover for a product by name, product code or barcode. Asks which one if several match.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world hints, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it can match by different identifier types and it asks which one when multiple matches exist, which is non-obvious behavior an agent would otherwise not know. It does not address auth, rate limits, or no-match behavior, but those are less critical given the simple read operation and the presence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core output front-loaded and the disambiguation behavior in the second sentence. There is no filler or repetition of schema/annotation details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter), rich annotations, and an existing output schema, the description is complete for correct invocation. It covers what the tool returns, how the product is identified, and the ambiguous-match behavior. The only possible gap, no-match handling, is likely covered by the output schema or can be reasonably inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains that the single "product" parameter can be a name, product code, or barcode. This is essential semantic information beyond the schema's bare string type. It does not fully specify format rules, but for one parameter the meaning is sufficiently conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it returns "On-hand quantity and days of cover for a product." It also specifies the lookup modes (name, product code, barcode) and explicitly signals that it asks for disambiguation when multiple products match, which distinguishes it from sibling tools that surface lists or summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The title and description make clear this is for fetching stock level for a single product, and the search-by-identifier wording implies when it is appropriate. However, it does not explicitly contrast itself with alternatives like get_low_stock or suggest_reorder, and offers no exclusions or conditions for choosing this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_moversBest and slowest sellersBRead-onlyIdempotent
Top or bottom products by units sold over the last N days.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| direction | No | top |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds the time-window scoping and the units-sold ranking basis, but it does not disclose additional behavioral traits such as empty-result behavior, pagination, or interpretation of 'bottom' beyond the direction parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly scoped sentence with no filler. It front-loads the core behavior and avoids restating schema defaults or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, the output schema is present, and annotations are comprehensive, so the description does not need to explain return values. However, it lacks explicit usage guidance and does not fully describe the limit parameter, leaving minor but real gaps for an agent deciding whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It effectively explains 'days' (last N days), 'direction' (top or bottom), and the ranking basis, but it does not explicitly explain 'limit' or how it caps the returned product list. The parameter names and defaults make some of this inferable, but a clear statement about limit would be stronger.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (products) and the metric (units sold) over a configurable time window, and the title 'Best and slowest sellers' reinforces the meaning. It is distinguishable from siblings like get_low_stock or get_sales_summary, though it lacks an explicit verb like 'returns' or 'lists'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose this tool over alternatives, and none of the sibling tools are mentioned. The description implies its use for top/bottom seller analysis, but there are no explicit conditions, exclusions, or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_reorderSuggest a reorderARead-onlyIdempotent
What to reorder now: items at/below minimum. Quantity = (lead time 2 + 7 days) x 14-day average daily sales - on hand. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| est_total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds valuable behavioral context by defining which items are included (at/below minimum) and exactly how quantity is calculated. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and efficient, with the core purpose front-loaded in the first sentence. The formula is presented clearly and the read-only modifier is a single useful word. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no input parameters, the description fully explains what it does, what data it considers, and the formula for output quantities. The output schema exists to describe return structure, so the description does not need to cover that. No meaningful context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter documentation burden. The description explains the internal data inputs used (lead time, average daily sales, on-hand quantity) even though they are not user-supplied parameters. This is more than adequate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: suggest reorder quantities for items at/below minimum. It also gives the exact quantity formula, distinguishing it from generic stock viewers and order-creation tools. The read-only note reinforces that this is an advisory, not a mutation, tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'What to reorder now' clearly signals when to use the tool: during reorder planning. It does not explicitly name alternatives like create_purchase_order_draft or get_low_stock, but the read-only designation and focus on suggested quantities imply its role versus sibling tools. Some explicit exclusion guidance would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
confirm_purchase_order - First observed
create_purchase_order_draft - First observed
get_low_stock - First observed
get_sales_summary - First observed
get_stock_level - First observed
get_top_movers - First observed
suggest_reorder
TDQS
Scored across 7 tools
Most tools are clearly distinct, but get_low_stock and suggest_reorder both surface items at or below minimum stock, which could cause some confusion. The descriptions clarify that one is a status report while the other provides specific reorder quantities, so the boundary is workable.
All tool names follow a consistent verb_noun pattern: get_*, suggest_reorder, create_purchase_order_draft, confirm_purchase_order. The naming clearly communicates the action and object, with no mixed conventions or vague verbs.
Seven tools is well-scoped for a KiotViet inventory and purchasing assistant. Each tool covers a meaningful step in the workflow from stock and sales visibility to reorder suggestions and purchase order confirmation.
The tool set covers the core inventory, sales, and purchase-order workflow end to end, including the important two-phase draft/confirm purchase order flow. Minor gaps exist, such as no ability to list or cancel existing purchase orders or adjust stock, but these do not break the primary use case.
Maintenance
Related MCP Connectors
- PressoOAuthnow.presso
Connect e-commerce and marketing data to AI assistants via MCP.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Multi-tenant MCP gateway for AI commerce. One connection, every store.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage products, shopping carts, and orders in an online store through a well-defined MCP API.-
- FlicenseAqualityDmaintenanceEnables store operations including inventory and sales queries and automated replenishment ordering through natural language.3-
- FlicenseBqualityBmaintenanceEnables merchants and customers to interact with the Shoppingate AI Platform, including product searches, inventory management, order tracking, promotions, and personalized recommendations via natural language.14-
- FlicenseAqualityCmaintenanceEnables MCP clients to manage Jumia Vendor Center catalogs and orders through natural language, including product creation/updates, inventory sync, order fulfillment, shipping labels, and payout monitoring.27-