Kuaidi100 launched China's first MCP-protocol-compatible logistics information service platform. The core API services of Kuaidi100's Baidiy
KiotViet MCP by usefulapi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Read KiotViet products, customers, invoices, orders and stock; create customers and orders.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http kiotviet-mcp-by-usefulapi https://kiotviet.usefulapi.io/mcp
# 2 — ask your agent for something these tools do
# kiotviet_list_products, kiotviet_get_product, kiotviet_get_product_by_code and 26 more
KiotViet MCP by usefulapi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http kiotviet-mcp-by-usefulapi https://kiotviet.usefulapi.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
29 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List products (code, barcode, name, category, base price, units, attributes). Optionally include stock per branch (include_inventory) and price-book prices. Filter by name, category, branch, active flag or last change. GET /products.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Filter by product name. |
| category_id | integer | no | Only products in this category (see kiotviet_list_categories). |
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| is_active | boolean | no | Only active (true) or inactive (false) products. |
| include_inventory | boolean | no | Include the stock on hand per branch. |
| include_pricebook | boolean | no | Include the price-book prices. |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One product by id: code, barcode, name, category, base price, units, attributes, images, stock per branch and price books. GET /products/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | integer | yes | KiotViet product id. |
One product by its product code (SKU). GET /products/code/{code}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | KiotViet product code. |
List product categories (id, name, parent, whether it has children). Set hierarchical to get the category tree. GET /categories.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hierarchical | boolean | no | Return the nested tree (ignores last_modified_from). |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One product category by id (name, parent, children). GET /categories/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category_id | integer | yes | KiotViet category id. |
List customers (code, name, phone, email, address, debt, total invoiced, reward points, groups). Contains personal data of the shop's customers. Filter by code, name, phone, group or last change. GET /customers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | no | Customer code. |
| name | string | no | Filter by customer name. |
| contact_number | string | no | Filter by phone number. |
| group_id | integer | no | Only customers in this customer group. |
| include_customer_group | boolean | no | Include each customer's groups. |
| include_total | boolean | no | Include financial totals (debt, total invoiced, points). |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One customer by id: contact data, debt, total invoiced, reward points, groups. GET /customers/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| customer_id | integer | yes | KiotViet customer id. |
One customer by customer code. GET /customers/code/{code}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | KiotViet customer code. |
WRITE: create a new customer in the shop (name required; code is generated by KiotViet if omitted). Always check with the user first, and look the customer up by phone before creating a duplicate. POST /customers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Customer name. |
| code | string | no | Customer code (optional; KiotViet generates one). |
| contact_number | string | no | Phone number. |
| string | no | Email address. | |
| address | string | no | Street address. |
| birth_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| comments | string | no | Note on the customer. |
| group_ids | array | no | Customer group ids. |
| organization | string | no | Company name. |
| tax_code | string | no | Tax code (ma so thue). |
List sales invoices (code, date, branch, customer, total, amount paid, status, lines). Filter by branch, customer, status, order, purchase-date range or last change. GET /invoices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| customer_ids | array | no | Only invoices of these customers. |
| customer_code | string | no | Only invoices of the customer with this code. |
| status | array | no | KiotViet status code(s) to include. |
| order_id | integer | no | Only the invoice created from this sales order. |
| from_purchase_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| to_purchase_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| include_payment | boolean | no | Include the payments. |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One invoice by id with its lines, payments and delivery. GET /invoices/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invoice_id | integer | yes | KiotViet invoice id. |
One invoice by invoice code (for example HD000123). GET /invoices/code/{code}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | KiotViet invoice code. |
List sales orders (code, date, branch, customer, total, status, lines, delivery). Filter by branch, customer, status, creation date (from) or last change (from/to). GET /orders.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| customer_ids | array | no | Only orders of these customers. |
| customer_code | string | no | Only orders of the customer with this code. |
| status | array | no | KiotViet status code(s) to include. |
| sale_channel_id | integer | no | Only orders from this sales channel. |
| created_date | string | no | Only orders created at or after this date. |
| last_modified_to | string | no | Only orders last changed up to this date-time (KiotViet toDate is a bound on the modification time, not the creation time). Use with last_modified_from. |
| include_payment | boolean | no | Include the payments. |
| include_order_delivery | boolean | no | Include the delivery details. |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One sales order by id with its lines, payments and delivery. GET /orders/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | integer | yes | KiotViet order id. |
One sales order by order code (for example DH000123). GET /orders/code/{code}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | KiotViet order code. |
WRITE: create a sales order (an order, not an invoice: no invoice is made and no payment is recorded) with lines of existing products in a branch, for an existing customer or none. Always confirm the products, quantities and prices with the user first. POST /orders.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_id | integer | yes | Branch the order is for (see kiotviet_list_branches). |
| customer_id | integer | no | Existing customer id (see kiotviet_list_customers). |
| description | string | no | Note on the order. |
| discount | number | no | Order discount amount. |
| sold_by_id | integer | no | Salesperson user id (see kiotviet_list_users). |
| sale_channel_id | integer | no | Sales channel id. |
| items | array | yes | The order lines. |
List the shop's branches (id, name, code, phone, address). Use the ids to filter other tools. GET /branches.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
Stock on hand and reserved quantity per product and branch. Filter by branch or last change. GET /productOnHands.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
List suppliers (code, name, phone, email, address, debt, total invoiced). Filter by code, name, phone or last change. GET /suppliers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | no | Supplier code. |
| name | string | no | Filter by supplier name. |
| contact_number | string | no | Filter by phone number. |
| include_total | boolean | no | Include financial totals (debt, total invoiced). |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One supplier by id. GET /suppliers/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| supplier_id | integer | yes | KiotViet supplier id. |
List goods receipts from suppliers (nhap hang: code, date, branch, supplier, total, lines). Filter by branch, status or purchase-date range. GET /purchaseorders.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| status | array | no | KiotViet status code(s) to include. |
| from_purchase_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| to_purchase_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| include_payment | boolean | no | Include the payments. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One goods receipt (nhap hang) by id with its lines. GET /purchaseorders/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchase_order_id | integer | yes | KiotViet goods receipt id. |
List orders placed with suppliers (dat hang nhap: code, date, branch, supplier, status, lines, amount paid). Filter by branch, status, supplier or product text. GET /ordersuppliers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_id | integer | no | Only this branch. |
| status | integer | no | KiotViet status code. |
| supplier_key | string | no | Supplier code, name or phone. |
| product_key | string | no | Product code or name. |
| code_key | string | no | Order code. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
List customer returns (code, date, branch, customer, invoice, return total, lines). GET /returns.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_payment | boolean | no | Include the payments. |
| last_modified_from | string | no | Only records changed at or after this date-time (shop local time). |
| order_by | string | no | Sort field. |
| order_direction | string | no | Sort direction. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
One customer return by id with its lines. GET /returns/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| return_id | integer | yes | KiotViet return id. |
List cash-book entries (receipts and payments: code, branch, method, partner, amount, date, status). Filter by branch, direction or date range. GET /cashflow.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| branch_ids | array | no | Only these branches (see kiotviet_list_branches). |
| is_receipt | boolean | no | true = receipts (money in), false = payments (money out). |
| start_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| end_date | string | no | Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time). |
| code | string | no | Voucher code. |
| partner_name | string | no | Customer, supplier or other partner name. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
List the shop's staff users (id, username, name, phone, email). GET /users.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
List price books (bang gia: name, active flag, validity dates, branches, customer groups). GET /pricebooks.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_branches | boolean | no | Include the branches each price book applies to. |
| include_customer_groups | boolean | no | Include the customer groups each price book applies to. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
The product prices of one price book (product id, code, price), paged. GET /pricebooks/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| price_book_id | integer | yes | KiotViet price book id. |
| current_item | integer | no | Record offset to start from (0 = first record). Pass the previous reply's next_item. |
| page_size | integer | no | Records per page, 1-100 (default 20). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install KiotViet MCP by usefulapi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| kiotviet_list_products | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_product | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_product_by_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_categories | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_category | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_customers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_customer | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_customer_by_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_create_customer | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| kiotviet_list_invoices | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_invoice | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_invoice_by_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_orders | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_order | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_order_by_code | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_create_order | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| kiotviet_list_branches | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_stock | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_suppliers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_supplier | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_purchase_orders | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_purchase_order | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_supplier_orders | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_returns | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_return | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_cashflow | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_users | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_list_price_books | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| kiotviet_get_price_book | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.12.5.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish KiotViet MCP by usefulapi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.