# KiotViet MCP by usefulapi (remote · kiotviet.usefulapi.io)

Read KiotViet products, customers, invoices, orders and stock; create customers and orders.

- Trust score: 18/100 (low)
- Change this week: −45
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `kiotviet.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet.md), [page](https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet)

## Channel facts

- Endpoint: `https://kiotviet.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.11.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the KiotViet MCP by usefulapi server?

KiotViet MCP by usefulapi is a hosted endpoint at https://kiotviet.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-kiotviet 'https://kiotviet.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-kiotviet": {
      "url": "https://kiotviet.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-kiotviet": {
      "type": "http",
      "url": "https://kiotviet.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-kiotviet]
url = "https://kiotviet.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-kiotviet": {
      "type": "remote",
      "url": "https://kiotviet.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-kiotviet --url 'https://kiotviet.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-kiotviet:
    url: "https://kiotviet.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-kiotviet": {
      "Transport": "http",
      "Url": "https://kiotviet.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-kiotviet -t streamable-http -u 'https://kiotviet.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-kiotviet": {
      "type": "http",
      "url": "https://kiotviet.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-01 (score 18, −49)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.17 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 67, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “add_a_new_customer”
- [functional] New prompt “check_stock_by_branch”
- [functional] New prompt “look_up_a_customer_and_their_orders”
- [functional] New prompt “review_supplier_purchases”
- [functional] New prompt “review_the_day_s_sales”
- [functional] New prompt “take_a_sales_order”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.7.0 → 1.9.0
- [functional] Server version: 1.6.0 → 1.7.0
- [functional] Server version: 1.5.2 → 1.6.0

### 2026-10-30 (score 64, +1)

- [functional] Server version: 1.5.1 → 1.5.2
- [functional] Server version: 1.5.0 → 1.5.1

### 2026-10-29 (score 63, 0)

- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0

### 2026-10-28 (score 63, +1)

- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-27 (score 62, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-26 (score 62)

First indexed and scored.

## MCP tools (29)

### `kiotviet_list_products` (~248 tokens)

List products

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.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `category_id` (integer): Only products in this category (see kiotviet_list_categories).
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `include_inventory` (boolean): Include the stock on hand per branch.
- `include_pricebook` (boolean): Include the price-book prices.
- `is_active` (boolean): Only active (true) or inactive (false) products.
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `name` (string): Filter by product name.
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_product` (~60 tokens)

Get product

One product by id: code, barcode, name, category, base price, units, attributes, images, stock per branch and price books. GET /products/{id}.

Input parameters:

- `product_id` (integer, required): KiotViet product id.

### `kiotviet_get_product_by_code` (~42 tokens)

Get product by code

One product by its product code (SKU). GET /products/code/{code}.

Input parameters:

- `code` (string, required): KiotViet product code.

### `kiotviet_list_categories` (~143 tokens)

List categories

List product categories (id, name, parent, whether it has children). Set hierarchical to get the category tree. GET /categories.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `hierarchical` (boolean): Return the nested tree (ignores last_modified_from).
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_category` (~43 tokens)

Get category

One product category by id (name, parent, children). GET /categories/{id}.

Input parameters:

- `category_id` (integer, required): KiotViet category id.

### `kiotviet_list_customers` (~229 tokens)

List customers

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.

Input parameters:

- `code` (string): Customer code.
- `contact_number` (string): Filter by phone number.
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `group_id` (integer): Only customers in this customer group.
- `include_customer_group` (boolean): Include each customer's groups.
- `include_total` (boolean): Include financial totals (debt, total invoiced, points).
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `name` (string): Filter by customer name.
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_customer` (~50 tokens)

Get customer

One customer by id: contact data, debt, total invoiced, reward points, groups. GET /customers/{id}.

Input parameters:

- `customer_id` (integer, required): KiotViet customer id.

### `kiotviet_get_customer_by_code` (~39 tokens)

Get customer by code

One customer by customer code. GET /customers/code/{code}.

Input parameters:

- `code` (string, required): KiotViet customer code.

### `kiotviet_create_customer` (~195 tokens)

Create customer

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.

Input parameters:

- `address` (string): Street address.
- `birth_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).
- `code` (string): Customer code (optional; KiotViet generates one).
- `comments` (string): Note on the customer.
- `contact_number` (string): Phone number.
- `email` (string): Email address.
- `group_ids` (array): Customer group ids.
- `name` (string, required): Customer name.
- `organization` (string): Company name.
- `tax_code` (string): Tax code (ma so thue).

### `kiotviet_list_invoices` (~309 tokens)

List invoices

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.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `customer_code` (string): Only invoices of the customer with this code.
- `customer_ids` (array): Only invoices of these customers.
- `from_purchase_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).
- `include_payment` (boolean): Include the payments.
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `order_id` (integer): Only the invoice created from this sales order.
- `page_size` (integer): Records per page, 1-100 (default 20).
- `status` (array): KiotViet status code(s) to include.
- `to_purchase_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).

### `kiotviet_get_invoice` (~44 tokens)

Get invoice

One invoice by id with its lines, payments and delivery. GET /invoices/{id}.

Input parameters:

- `invoice_id` (integer, required): KiotViet invoice id.

### `kiotviet_get_invoice_by_code` (~46 tokens)

Get invoice by code

One invoice by invoice code (for example HD000123). GET /invoices/code/{code}.

Input parameters:

- `code` (string, required): KiotViet invoice code.

### `kiotviet_list_orders` (~306 tokens)

List sales orders

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.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `created_date` (string): Only orders created at or after this date.
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `customer_code` (string): Only orders of the customer with this code.
- `customer_ids` (array): Only orders of these customers.
- `include_order_delivery` (boolean): Include the delivery details.
- `include_payment` (boolean): Include the payments.
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `last_modified_to` (string): 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.
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).
- `sale_channel_id` (integer): Only orders from this sales channel.
- `status` (array): KiotViet status code(s) to include.

### `kiotviet_get_order` (~44 tokens)

Get sales order

One sales order by id with its lines, payments and delivery. GET /orders/{id}.

Input parameters:

- `order_id` (integer, required): KiotViet order id.

### `kiotviet_get_order_by_code` (~46 tokens)

Get sales order by code

One sales order by order code (for example DH000123). GET /orders/code/{code}.

Input parameters:

- `code` (string, required): KiotViet order code.

### `kiotviet_create_order` (~171 tokens)

Create sales order

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.

Input parameters:

- `branch_id` (integer, required): Branch the order is for (see kiotviet_list_branches).
- `customer_id` (integer): Existing customer id (see kiotviet_list_customers).
- `description` (string): Note on the order.
- `discount` (number): Order discount amount.
- `items` (array, required): The order lines.
- `sale_channel_id` (integer): Sales channel id.
- `sold_by_id` (integer): Salesperson user id (see kiotviet_list_users).

### `kiotviet_list_branches` (~86 tokens)

List branches

List the shop's branches (id, name, code, phone, address). Use the ids to filter other tools. GET /branches.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_list_stock` (~142 tokens)

List stock on hand

Stock on hand and reserved quantity per product and branch. Filter by branch or last change. GET /productOnHands.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_list_suppliers` (~175 tokens)

List suppliers

List suppliers (code, name, phone, email, address, debt, total invoiced). Filter by code, name, phone or last change. GET /suppliers.

Input parameters:

- `code` (string): Supplier code.
- `contact_number` (string): Filter by phone number.
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `include_total` (boolean): Include financial totals (debt, total invoiced).
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `name` (string): Filter by supplier name.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_supplier` (~37 tokens)

Get supplier

One supplier by id. GET /suppliers/{id}.

Input parameters:

- `supplier_id` (integer, required): KiotViet supplier id.

### `kiotviet_list_purchase_orders` (~216 tokens)

List goods receipts

List goods receipts from suppliers (nhap hang: code, date, branch, supplier, total, lines). Filter by branch, status or purchase-date range. GET /purchaseorders.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `from_purchase_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).
- `include_payment` (boolean): Include the payments.
- `page_size` (integer): Records per page, 1-100 (default 20).
- `status` (array): KiotViet status code(s) to include.
- `to_purchase_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).

### `kiotviet_get_purchase_order` (~49 tokens)

Get goods receipt

One goods receipt (nhap hang) by id with its lines. GET /purchaseorders/{id}.

Input parameters:

- `purchase_order_id` (integer, required): KiotViet goods receipt id.

### `kiotviet_list_supplier_orders` (~161 tokens)

List supplier orders

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.

Input parameters:

- `branch_id` (integer): Only this branch.
- `code_key` (string): Order code.
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `page_size` (integer): Records per page, 1-100 (default 20).
- `product_key` (string): Product code or name.
- `status` (integer): KiotViet status code.
- `supplier_key` (string): Supplier code, name or phone.

### `kiotviet_list_returns` (~133 tokens)

List returns

List customer returns (code, date, branch, customer, invoice, return total, lines). GET /returns.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `include_payment` (boolean): Include the payments.
- `last_modified_from` (string): Only records changed at or after this date-time (shop local time).
- `order_by` (string): Sort field.
- `order_direction` (string): Sort direction.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_return` (~40 tokens)

Get return

One customer return by id with its lines. GET /returns/{id}.

Input parameters:

- `return_id` (integer, required): KiotViet return id.

### `kiotviet_list_cashflow` (~233 tokens)

List cash flow

List cash-book entries (receipts and payments: code, branch, method, partner, amount, date, status). Filter by branch, direction or date range. GET /cashflow.

Input parameters:

- `branch_ids` (array): Only these branches (see kiotviet_list_branches).
- `code` (string): Voucher code.
- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `end_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).
- `is_receipt` (boolean): true = receipts (money in), false = payments (money out).
- `page_size` (integer): Records per page, 1-100 (default 20).
- `partner_name` (string): Customer, supplier or other partner name.
- `start_date` (string): Date 2026-10-01 or date-time 2026-10-01T08:00:00 (shop local time).

### `kiotviet_list_users` (~78 tokens)

List users

List the shop's staff users (id, username, name, phone, email). GET /users.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_list_price_books` (~118 tokens)

List price books

List price books (bang gia: name, active flag, validity dates, branches, customer groups). GET /pricebooks.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `include_branches` (boolean): Include the branches each price book applies to.
- `include_customer_groups` (boolean): Include the customer groups each price book applies to.
- `page_size` (integer): Records per page, 1-100 (default 20).

### `kiotviet_get_price_book` (~99 tokens)

Get price book prices

The product prices of one price book (product id, code, price), paged. GET /pricebooks/{id}.

Input parameters:

- `current_item` (integer): Record offset to start from (0 = first record). Pass the previous reply's next_item.
- `page_size` (integer): Records per page, 1-100 (default 20).
- `price_book_id` (integer, required): KiotViet price book id.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet#diagnostics

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 67
- 2026-10-30: 64
- 2026-10-29: 63
- 2026-10-28: 63
- 2026-10-27: 62
- 2026-10-26: 62

## Common questions

### What is the KiotViet MCP by usefulapi server?

KiotViet MCP by usefulapi is listed in the public MCP registry as io.usefulapi/kiotviet. Read KiotViet products, customers, invoices, orders and stock; create customers and orders. This page covers its hosted endpoint (https://kiotviet.usefulapi.io/mcp).

### Is the KiotViet MCP by usefulapi server safe to use?

KiotViet MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the KiotViet MCP by usefulapi server expose?

KiotViet MCP by usefulapi exposes 29 tools: kiotviet_list_products, kiotviet_get_product, kiotviet_get_product_by_code, kiotviet_list_categories, kiotviet_get_category, and 24 more. Their descriptions and schemas cost roughly 3,582 tokens of context every time the server is loaded.

### Does the KiotViet MCP by usefulapi server require authentication?

Its publisher declares no required credentials for KiotViet MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the KiotViet MCP by usefulapi server still maintained?

KiotViet MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the KiotViet MCP by usefulapi server?

VerifyMCP ran 4 checks on KiotViet MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about KiotViet MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://kiotviet.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/kiotviet/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-kiotviet/kiotviet
