Veridigit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Veridigit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Verified validation of structured identifiers for AI agents — checksums, not guesses.
LLMs cheerfully accept malformed IBANs, mistype card check digits, invent ISBN and VIN check digits, and guess a card's brand wrong. veridigit gives an agent a deterministic, authoritative answer instead: it runs the real checksum algorithms and returns structured results with the parsed parts and clear error reasons.
It ships as both an MCP server (for agents to call live) and a typed TypeScript library (for apps to import).
Supported in v1:
(Visa, Mastercard, Amex, Discover, Diners, JCB, UnionPay), and length rules.
On 32 randomly generated, non-memorised identifiers, a frontier model with no tool got the check digit wrong 91% of the time — IBAN 100%, VIN 100%, ISBN-13 88%, card/Luhn 75% — versus 0% for veridigit. The failure is invisible: the model returns a confident, well-formatted answer that happens to be wrong. veridigit replaces the guess with the algorithm.
Benchmark and reproducible harness: https://qinisolabs.github.io/veridigit
The 91% figure is one frontier model, tool-free, at temperature 0. Run it on any model yourself with the harness in bench/.// in your MCP client config
{
"mcpServers": {
"veridigit": { "command": "npx", "args": ["-y", "veridigit"] }
}
}Tools exposed: validate_iban, validate_card, validate_isbn, validate_vin.
npm install veridigitimport { validateIban, validateCard, validateIsbn13, validateVin } from "veridigit";
validateIban("GB82 WEST 1234 5698 7654 32");
// { valid: true, countryCode: "GB", country: "United Kingdom", checkDigits: "82", ... }
validateCard("4111 1111 1111 1111");
// { valid: true, luhnValid: true, brand: "Visa", lengthValid: true, ... }
validateIsbn13("978-0-306-40615-7"); // { valid: true, type: "ISBN-13", checkDigit: "7", ... }
validateVin("1HGCM82633A004352"); // { valid: true, checkDigit: "3", ... }Helper exports are also available: ibanCheckDigits, luhnValid, luhnCheckDigit, detectBrand, isbn13CheckDigit, vinCheckDigit, supportedIbanCountries.
veridigit validates the structure of an identifier — its format and checksum. It does not confirm that a bank account, card, book or vehicle actually exists, is active, or belongs to anyone. It performs no network calls.
npm install
npm run build # tsc -> dist/
npm test # parity/known-answer tests via tsxThe curated reference data (IBAN country specs, card BIN ranges) lives in data/.
Apache-2.0
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.