# veridigit [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/qinisolabs/veridigit  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/veridigit

## Description
Verified IBAN, card, ISBN-13 & VIN validation for AI agents — checksums, not guesses.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "veridigit": {
    "command": "npx",
    "args": ["-y","veridigit"]
  }
}
```

## Documentation & README

# veridigit

**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:

- **IBAN** — ISO 7064 mod-97 checksum + country-specific length, for 75+ countries.
- **Payment cards** — Luhn (ISO/IEC 7812) checksum, brand detection from the BIN
  (Visa, Mastercard, Amex, Discover, Diners, JCB, UnionPay), and length rules.
- **ISBN-13** — 978/979 prefix and mod-10 weighted check digit.
- **VIN** — ISO 3779 alphabet (no I/O/Q) and the position-9 transliteration check digit.

## Why

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/`](https://github.com/qinisolabs/veridigit/blob/HEAD/bench/).

## Use as an MCP server

```jsonc
// in your MCP client config
{
  "mcpServers": {
    "veridigit": { "command": "npx", "args": ["-y", "veridigit"] }
  }
}
```

Tools exposed: `validate_iban`, `validate_card`, `validate_isbn`, `validate_vin`.

## Use as a library

```bash
npm install veridigit
```

```ts
import { 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`.

## Scope

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

## Development

```bash
npm install
npm run build   # tsc -> dist/
npm test        # parity/known-answer tests via tsx
```

The curated reference data (IBAN country specs, card BIN ranges) lives in `data/`.

## License

Apache-2.0

