vn-skills
NPM · @VN-SKILLS/MCP
Vietnam: VietQR, address, tax ID, CCCD, phone, holiday, names, number/date format, lunar, e-invoice
Available components
Last scanned (14 hours ago)
Scores higher than 90% of npm servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 43 of 126 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to beiryu/vn-skills). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3720 tokens (~50/item across 74 items; 37 tools + 37 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management43
- Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage80
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 40% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 37 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Checks we ran (17)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
- Capabilities
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 30 Oct 26 −12
- Malware scan: pass → unverified ▼ security
- Schema quality: 75 → 50 ▲ functional
- First check of Capabilities: pass functional
- First check of Schema quality: 100 functional
- Package version: 0.7.0 → 0.8.0 functional
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
- Tool safety: pass → unverified ▼ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Stability: unverified → 0.07 ▲ functional
- First check of Schema quality: unverified functional
- Package version: 0.6.0 → 0.7.0 functional
- 24 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 23 Oct 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/@vn-skills/mcp@0.8.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | beiryu/vn-skills |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/beiryu/vn-skills/.github/workflows/release.yml@refs/heads/main |
| Rekor log index | 3596975677 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:162c09a02aa31818a938957d6775c5f6b169f98f255afe63a22cd86139a2bbff2d612134d23cb51b4fc362359afd551039b5b0b33ea790403d45fc773 |
Background: How many MCP packages publish verified provenance →
Dependencies 126 packages
| Packages resolved | 126 |
|---|---|
| Stale | 43 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
vietqr_banks Search banks ~75
Search the NAPAS bank list by BIN, code, short name, full name or SWIFT/BIC code. Empty query lists all banks.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | e.g. "vietcombank", "VCB", "9704", "BFTVVNVX" (SWIFT/BIC) |
No output schema declared.
No examples provided.
vietqr_build Build VietQR ~169
Create a VietQR (NAPAS 247) bank-transfer QR payload. Returns the EMVCo string, CRC and optionally a PNG image. Bank accepts BIN (970436), code (VCB) or name (Vietcombank). Amount is integer VND; note is sanitized (no diacritics, max 25 chars).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Beneficiary account number |
| amount | number|string | – | Amount in VND (integer). Omit for a static QR. |
| bank | string | yes | Bank BIN, code or name, e.g. "VCB", "970436", "Vietcombank" |
| image | boolean | – | Also return a PNG image (base64). Default false. |
| note | string | – | Transfer note / purpose |
No output schema declared.
No examples provided.
vietqr_decode Decode VietQR image ~76
Read the QR code in a PNG image file and decode it like vietqr_parse: bank, account, amount, note, CRC validity. Returns READ_ERROR for an unreadable/non-PNG file and NO_QR when no QR code is found.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to a PNG image containing a VietQR code |
No output schema declared.
No examples provided.
vietqr_parse Parse VietQR ~53
Decode a VietQR / EMVCo QR payload string: bank, account, amount, note, and whether the CRC is valid.
| Name | Type | Req | Description |
|---|---|---|---|
| payload | string | yes | The decoded QR text, starting with 000201 |
No output schema declared.
No examples provided.
vn_address_convert Convert old address to new (2025) ~137
Convert a pre-July-2025 Vietnamese address (63 provinces, districts, wards) into the new 2-level structure (34 provinces, wards). Returns the new ward/province, mapping type (unchanged/merged/divided) and all candidates when the old ward was split. When the client supports elicitation, the server may ask the user to pick the new ward for a split old ward (chosenBy: user|default).
| Name | Type | Req | Description |
|---|---|---|---|
| district | string | – | – |
| province | string | – | – |
| street | string | – | – |
| text | string | – | Free-text old address |
| ward | string | – | – |
No output schema declared.
No examples provided.
vn_address_convert_batch Convert many old addresses to new (2025) ~122
Convert up to 1000 pre-July-2025 Vietnamese free-text addresses (63 provinces, districts, wards) into the new 2-level structure (34 provinces, wards) in one call. Returns per-row results plus a summary of converted and failed rows. Null, empty or non-string entries do not fail the call: they come back as failed rows (ok:false with an error code) and are counted in summary.failed.
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | array | yes | Free-text old addresses (max 1000); null or empty entries become failed rows |
No output schema declared.
No examples provided.
vn_address_history Former wards of a current ward ~57
List the pre-01/07/2025 wards (with district and province) that became a current ward, by ward code or name.
| Name | Type | Req | Description |
|---|---|---|---|
| province | string | – | – |
| ward | string | yes | Current ward code or name |
No output schema declared.
No examples provided.
vn_address_parse Parse Vietnamese address ~96
Parse a free-text Vietnamese address into province / ward / street using the post-01/07/2025 catalogue (34 provinces, no districts). Handles missing diacritics and abbreviations (TP.HCM, Q.1, P. Bến Nghé). Set mode "legacy" for pre-2025 addresses with districts.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | Default auto |
| text | string | yes | Free-text address |
No output schema declared.
No examples provided.
vn_address_province Look up a province ~47
Look up one current province by name, alias (e.g. "TP.HCM") or 2-digit code.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Province name, alias or code |
No output schema declared.
No examples provided.
vn_address_provinces List provinces ~32
List the 34 current Vietnamese provinces (since 01/07/2025) with ward counts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
vn_address_search_wards Search wards ~49
Find current (post-2025) wards by name, optionally within a province.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| province | string | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
vn_einvoice_example Example e-invoice ~20
Return a valid example invoice object to start from.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
vn_einvoice_mock_issue Issue invoice (mock) ~84
Issue an invoice through the in-memory MOCK provider (no real API, nothing persisted). Useful for testing integrations before wiring MISA/Viettel/VNPT sandbox adapters.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice | object | yes | Invoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]} |
No output schema declared.
No examples provided.
vn_einvoice_totals Compute e-invoice totals ~78
Validate an invoice and compute line amounts, VAT per rate, grand total and the total in Vietnamese words.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice | object | yes | Invoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]} |
| thousand | string | – | – |
No output schema declared.
No examples provided.
vn_einvoice_validate Validate e-invoice ~102
Validate an e-invoice (hóa đơn điện tử) object against the mandatory contents of Decree 123/2020 (series, date, seller tax ID, lines, VAT rates 0/5/8/10/KCT/KKKNT).
| Name | Type | Req | Description |
|---|---|---|---|
| invoice | object | yes | Invoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]} |
No output schema declared.
No examples provided.
vn_einvoice_vat Apply or split VAT ~134
Apply VAT to a net amount, or with inclusive=true split a VAT-inclusive price (giá đã gồm VAT) into net (tiền hàng) and VAT. Rates 0/5/8/10/KCT/KKKNT. Net is rounded half away from zero and the leftover đồng goes to VAT (library convention).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Integer VND amount |
| inclusive | boolean | – | true: amount already includes VAT |
| rate | number|string | yes | VAT rate: 0, 5, 8, 10, "KCT" or "KKKNT" |
No output schema declared.
No examples provided.
vn_holidays_add_working_days Add Vietnamese working days ~86
The date n working days after (or before, n < 0) a date, skipping weekends, holidays and nghỉ bù; the start date is not counted. certain: false if unannounced days were crossed.
| Name | Type | Req | Description |
|---|---|---|---|
| day | integer | yes | – |
| month | integer | yes | – |
| n | integer | yes | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_holidays_count_working_days Count Vietnamese working days ~82
Number of working days in (from, to]: the start date is not counted, the end date is; negative if to is before from. Skips weekends, holidays and nghỉ bù. certain: false if unannounced Tết or National Day days were crossed.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | – |
| to | string | yes | – |
No output schema declared.
No examples provided.
vn_holidays_ics Export Vietnam days off as an iCalendar file ~92
Export the official days off of a year (2023-2199) as iCalendar (RFC 5545) text for Google Calendar, Outlook or Apple Calendar: holidays, nghỉ bù, swapped days and (optionally) working Saturdays. Unannounced years omit pending days and list them in warnings.
| Name | Type | Req | Description |
|---|---|---|---|
| includeWorkingSaturdays | boolean | – | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_holidays_is_working_day Is it a working day in Vietnam? ~83
Whether a date is a working day for public-sector staff (Monday-Friday minus holidays and nghỉ bù, plus swapped Saturdays). certain: false when the year is not announced and the date may still become a Tết or National Day day off.
| Name | Type | Req | Description |
|---|---|---|---|
| day | integer | yes | – |
| month | integer | yes | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_holidays_year Vietnam official days off for a year ~120
Official days off for public-sector staff in a year (2023-2199): Tết Dương lịch, Tết Âm lịch, Giỗ Tổ Hùng Vương, 30/4, 1/5, Quốc khánh, Ngày Văn hóa Việt Nam 24/11 (from 2026), with nghỉ bù and swapped working Saturdays from the Government notice. Unannounced years return the statutory days, announced: false and the pending Tết / National Day days.
| Name | Type | Req | Description |
|---|---|---|---|
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_id_parse Parse citizen ID ~64
Offline validation and decoding of a 12-digit CCCD (province, sex, birth year; legacy province mapped to 2025 province) or format check of a 9-digit CMND. Format validity does not prove the identity exists.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
vn_lunar_canchi Can chi of a year ~49
Can chi (e.g. Giáp Thìn) of a lunar year, with its leap month if any.
| Name | Type | Req | Description |
|---|---|---|---|
| year | integer | yes | Year, e.g. 2024 |
No output schema declared.
No examples provided.
vn_lunar_from_solar Solar to lunar date ~89
Convert a Gregorian date (dd/mm/yyyy or yyyy-mm-dd) to the Vietnamese lunar date with can chi (e.g. Ất Tỵ), zodiac, leap-month flag and solar term. Optional hour (0-23) adds hourCanChi, hourBranch, hourRange (giờ sinh).
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | – |
| hour | integer | – | – |
No output schema declared.
No examples provided.
vn_lunar_holidays Vietnamese holidays ~80
List Vietnamese holidays for a solar year (Tết, Giỗ Tổ Hùng Vương, 30/4, 1/5, 2/9, Trung thu...). Lunar holidays are resolved to solar dates. publicOnly limits to official days off.
| Name | Type | Req | Description |
|---|---|---|---|
| publicOnly | boolean | – | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_lunar_month Lunar month calendar ~61
Calendar of a Gregorian month: each day with lunar date (leap flag, mùng 1, rằm), day can chi, solar term starts and holidays/days off.
| Name | Type | Req | Description |
|---|---|---|---|
| month | integer | yes | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_lunar_parse_date Parse Vietnamese date phrase ~95
Turn a Vietnamese date phrase into a solar date: lunar ("rằm tháng Giêng năm sau", "mùng 1 Tết", "23 tháng Chạp"), relative ("ngày mai", "3 ngày nữa", "thứ Sáu tuần sau") or Gregorian. ref (yyyy-mm-dd) defaults to today in UTC+7.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | – | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
vn_lunar_tet Date of Tết ~48
Solar date of Tết (lunar new year) for a year, with can chi and leap month.
| Name | Type | Req | Description |
|---|---|---|---|
| year | integer | yes | Year, e.g. 2026 |
No output schema declared.
No examples provided.
vn_lunar_to_solar Lunar to solar date ~63
Convert a Vietnamese lunar date to the Gregorian date. Set leap=true for the leap (nhuận) month.
| Name | Type | Req | Description |
|---|---|---|---|
| day | integer | yes | – |
| leap | boolean | – | – |
| month | integer | yes | – |
| year | integer | yes | – |
No output schema declared.
No examples provided.
vn_money_parse Vietnamese number words to digits ~59
Parse an amount written in Vietnamese words back to digits, e.g. "một triệu hai trăm nghìn đồng" -> "1200000". Returns value (digit string), negative, unit, chan.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | – |
No output schema declared.
No examples provided.
vn_money_to_words Amount in Vietnamese words ~169
Read an integer VND amount in Vietnamese words, e.g. 1200000 -> "một triệu hai trăm nghìn đồng". Also reads plain numbers without a unit with plain: true, e.g. 30 -> "ba mươi". Options: thousand "nghìn"/"ngàn", odd "lẻ"/"linh", capitalize, unit.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number|string | yes | – |
| capitalize | boolean | – | – |
| chan | boolean | – | Append "chẵn" for round amounts |
| odd | string | – | – |
| plain | boolean | – | Read a plain number without a unit (default false); not with unit/chan |
| thousand | string | – | – |
| unit | string | – | Default "đồng"; "" for none |
No output schema declared.
No examples provided.
vn_name Vietnamese name tools ~84
Split a Vietnamese full name into họ / tên đệm / tên (handles Tôn Thất, Nguyễn Phúc), plus slug and initials; or sort a list of names by tên with Vietnamese collation.
| Name | Type | Req | Description |
|---|---|---|---|
| ascii | boolean | – | Strip diacritics from initials |
| name | string | – | Full name to split |
| names | array | – | Names to sort |
No output schema declared.
No examples provided.
vn_number_format Vietnamese number formatting and parsing ~90
Format numbers/VND/dates the Vietnamese way (1.234.567,89; 1.200.000 ₫; 1,2 triệu; dd/MM/yyyy) or parse typed amounts ("1tr2", "500k", "1,5 tỷ"; "1.500" = 1500).
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | – |
| value | number|string | yes | – |
No output schema declared.
No examples provided.
vn_phone Vietnamese phone number ~65
Normalise a Vietnamese phone number (0/84/+84, old 11-digit 01xx mobile prefixes) to national and E.164 forms and classify it: mobile (original carrier) or landline (area code, province). Offline.
| Name | Type | Req | Description |
|---|---|---|---|
| phone | string | yes | – |
No output schema declared.
No examples provided.
vn_tax_id_check_digit Tax ID check digit ~42
Compute the 10th check digit of a Vietnamese tax ID from its first 9 digits.
| Name | Type | Req | Description |
|---|---|---|---|
| first9 | string | yes | Exactly 9 digits |
No output schema declared.
No examples provided.
vn_tax_id_validate Validate tax ID ~77
Offline validation of a Vietnamese tax ID (mã số thuế): 10 digits (enterprise), 13 digits (branch, e.g. 0100233488-001) with check-digit verification, or 12-digit personal ID (format only). Does not query the tax authority.
| Name | Type | Req | Description |
|---|---|---|---|
| taxId | string | yes | – |
No output schema declared.
No examples provided.
vn_text_speech_normalize Rewrite text as spoken Vietnamese for TTS ~77
Rewrite numbers, VND amounts (1.250.000đ, 500k), percentages, phone numbers and dd/mm/yyyy dates in text as spoken Vietnamese for text-to-speech. Decimals and partial dates are left unchanged and listed in skipped. Returns text, changes, skipped.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | – |
No output schema declared.
No examples provided.
How do I install the vn-skills MCP server?
vn-skills runs locally as an npm package, launched with npx -y @vn-skills/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @vn-skills/mcp
claude mcp add beiryu-vn-skills -- npx -y @vn-skills/mcp
What is the vn-skills MCP server?
vn-skills is an MCP server listed in the public MCP registry as io.github.beiryu/vn-skills. Vietnam: VietQR, address, tax ID, CCCD, phone, holiday, names, number/date format, lunar, e-invoice. This page covers its npm package (@vn-skills/mcp).
Is the vn-skills MCP server safe to use?
vn-skills scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 vn-skills MCP server expose?
vn-skills exposes 37 tools: vietqr_build, vietqr_parse, vietqr_decode, vietqr_banks, vn_address_parse, and 32 more. Their descriptions and schemas cost roughly 3,006 tokens of context every time the server is loaded.
Is the vn-skills MCP server still maintained?
vn-skills 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 licence is the vn-skills MCP server under?
vn-skills declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the vn-skills MCP server?
VerifyMCP ran 17 checks on vn-skills, covering Malware scan, Known CVEs, Install scripts, Dependency health and 13 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.