Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

vn-skills

NPM · @VN-SKILLS/MCP

Vietnam: VietQR, address, tax ID, CCCD, phone, holiday, names, number/date format, lunar, e-invoice

Available components

+5 this week 86 Trust /100

Last scanned (14 hours ago)

Scores higher than 90% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

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
What we tested

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 →

Changelog

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.

Diagnostics

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 →

MCP tools · 37 exposed · ~3,006 tokens

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 →

Tool Tokens
vietqr_banks ~75

Search the NAPAS bank list by BIN, code, short name, full name or SWIFT/BIC code. Empty query lists all banks.

NameTypeReqDescription
querystring–e.g. "vietcombank", "VCB", "9704", "BFTVVNVX" (SWIFT/BIC)

No output schema declared.

No examples provided.

vietqr_build ~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).

NameTypeReqDescription
accountstringyesBeneficiary account number
amountnumber|string–Amount in VND (integer). Omit for a static QR.
bankstringyesBank BIN, code or name, e.g. "VCB", "970436", "Vietcombank"
imageboolean–Also return a PNG image (base64). Default false.
notestring–Transfer note / purpose

No output schema declared.

No examples provided.

vietqr_decode ~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.

NameTypeReqDescription
pathstringyesPath to a PNG image containing a VietQR code

No output schema declared.

No examples provided.

vietqr_parse ~53

Decode a VietQR / EMVCo QR payload string: bank, account, amount, note, and whether the CRC is valid.

NameTypeReqDescription
payloadstringyesThe decoded QR text, starting with 000201

No output schema declared.

No examples provided.

vn_address_convert ~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).

NameTypeReqDescription
districtstring––
provincestring––
streetstring––
textstring–Free-text old address
wardstring––

No output schema declared.

No examples provided.

vn_address_convert_batch ~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.

NameTypeReqDescription
addressesarrayyesFree-text old addresses (max 1000); null or empty entries become failed rows

No output schema declared.

No examples provided.

vn_address_history ~57

List the pre-01/07/2025 wards (with district and province) that became a current ward, by ward code or name.

NameTypeReqDescription
provincestring––
wardstringyesCurrent ward code or name

No output schema declared.

No examples provided.

vn_address_parse ~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.

NameTypeReqDescription
modestring–Default auto
textstringyesFree-text address

No output schema declared.

No examples provided.

vn_address_province ~47

Look up one current province by name, alias (e.g. "TP.HCM") or 2-digit code.

NameTypeReqDescription
querystringyesProvince name, alias or code

No output schema declared.

No examples provided.

vn_address_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 ~49

Find current (post-2025) wards by name, optionally within a province.

NameTypeReqDescription
limitinteger––
provincestring––
querystringyes–

No output schema declared.

No examples provided.

vn_einvoice_example ~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 ~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.

NameTypeReqDescription
invoiceobjectyesInvoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]}

No output schema declared.

No examples provided.

vn_einvoice_totals ~78

Validate an invoice and compute line amounts, VAT per rate, grand total and the total in Vietnamese words.

NameTypeReqDescription
invoiceobjectyesInvoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]}
thousandstring––

No output schema declared.

No examples provided.

vn_einvoice_validate ~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).

NameTypeReqDescription
invoiceobjectyesInvoice object: {series, issueDate, seller{name,taxId,address}, buyer{...}, lines[{name,quantity,unitPrice,vatRate}]}

No output schema declared.

No examples provided.

vn_einvoice_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).

NameTypeReqDescription
amountnumberyesInteger VND amount
inclusiveboolean–true: amount already includes VAT
ratenumber|stringyesVAT rate: 0, 5, 8, 10, "KCT" or "KKKNT"

No output schema declared.

No examples provided.

vn_holidays_add_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.

NameTypeReqDescription
dayintegeryes–
monthintegeryes–
nintegeryes–
yearintegeryes–

No output schema declared.

No examples provided.

vn_holidays_count_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.

NameTypeReqDescription
fromstringyes–
tostringyes–

No output schema declared.

No examples provided.

vn_holidays_ics ~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.

NameTypeReqDescription
includeWorkingSaturdaysboolean––
yearintegeryes–

No output schema declared.

No examples provided.

vn_holidays_is_working_day ~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.

NameTypeReqDescription
dayintegeryes–
monthintegeryes–
yearintegeryes–

No output schema declared.

No examples provided.

vn_holidays_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.

NameTypeReqDescription
yearintegeryes–

No output schema declared.

No examples provided.

vn_id_parse ~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.

NameTypeReqDescription
idstringyes–

No output schema declared.

No examples provided.

vn_lunar_canchi ~49

Can chi (e.g. Giáp Thìn) of a lunar year, with its leap month if any.

NameTypeReqDescription
yearintegeryesYear, e.g. 2024

No output schema declared.

No examples provided.

vn_lunar_from_solar ~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).

NameTypeReqDescription
datestringyes–
hourinteger––

No output schema declared.

No examples provided.

vn_lunar_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.

NameTypeReqDescription
publicOnlyboolean––
yearintegeryes–

No output schema declared.

No examples provided.

vn_lunar_month ~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.

NameTypeReqDescription
monthintegeryes–
yearintegeryes–

No output schema declared.

No examples provided.

vn_lunar_parse_date ~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.

NameTypeReqDescription
refstring––
textstringyes–

No output schema declared.

No examples provided.

vn_lunar_tet ~48

Solar date of Tết (lunar new year) for a year, with can chi and leap month.

NameTypeReqDescription
yearintegeryesYear, e.g. 2026

No output schema declared.

No examples provided.

vn_lunar_to_solar ~63

Convert a Vietnamese lunar date to the Gregorian date. Set leap=true for the leap (nhuận) month.

NameTypeReqDescription
dayintegeryes–
leapboolean––
monthintegeryes–
yearintegeryes–

No output schema declared.

No examples provided.

vn_money_parse ~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.

NameTypeReqDescription
textstringyes–

No output schema declared.

No examples provided.

vn_money_to_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.

NameTypeReqDescription
amountnumber|stringyes–
capitalizeboolean––
chanboolean–Append "chẵn" for round amounts
oddstring––
plainboolean–Read a plain number without a unit (default false); not with unit/chan
thousandstring––
unitstring–Default "đồng"; "" for none

No output schema declared.

No examples provided.

vn_name ~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.

NameTypeReqDescription
asciiboolean–Strip diacritics from initials
namestring–Full name to split
namesarray–Names to sort

No output schema declared.

No examples provided.

vn_number_format ~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).

NameTypeReqDescription
modestringyes–
valuenumber|stringyes–

No output schema declared.

No examples provided.

vn_phone ~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.

NameTypeReqDescription
phonestringyes–

No output schema declared.

No examples provided.

vn_tax_id_check_digit ~42

Compute the 10th check digit of a Vietnamese tax ID from its first 9 digits.

NameTypeReqDescription
first9stringyesExactly 9 digits

No output schema declared.

No examples provided.

vn_tax_id_validate ~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.

NameTypeReqDescription
taxIdstringyes–

No output schema declared.

No examples provided.

vn_text_speech_normalize ~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.

NameTypeReqDescription
textstringyes–

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add beiryu-vn-skills -- npx -y @vn-skills/mcp
Common questions

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.