The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Veridigit listing page.
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:
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/.
Tools exposed: validate_iban, validate_card, validate_isbn, validate_vin.
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.
The curated reference data (IBAN country specs, card BIN ranges) lives in data/.
Apache-2.0