Koskamo

Qiniso MCP

A deterministic fact-verification layer for AI agents that validates structured identifiers like IBANs, VAT numbers, crypto addresses, and phone numbers against checksums and curated authoritative data to prevent hallucinations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Qiniso MCP logo, by Qiniso LabsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Qiniso Labs
MCP endpoint (Streamable HTTP)
https://qiniso.qinisolabs.workers.dev/mcp
Vendor documentation

What its tools do

56 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

56 of 56 have a description · 56 of 56 declare behavior hints · 56 of 56 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Validate IBANs and payment card numbers
  • Verify VAT numbers and national tax IDs
  • Check crypto address formats
  • Validate VINs and ISBNs

Source and maintenance

Community listingRegistry 0.5.1
Maintenance checked

Protocol and capabilities

Server
qiniso 0.5.0
MCP protocol negotiated in check
2025-11-25
Tools
56 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Qiniso deterministically verifies structured facts (identifiers, locale, finance, crypto, national/tax IDs). Each tool validates ONE value per call. For validating MANY values (e.g. a CSV or spreadsheet column), looping these tools one-by-one is slow; the same checks are available as the npm library `@qinisolabs/qiniso` (same functions: validateIban, validateVat, validatePhone, …) for one-pass bulk validation in your own environment. For phone numbers, pass the number's ACTUAL country in `region` (e.g. GB for a UK number) — never reuse an unrelated country field; 'valid' means well-formed for that country's numbering plan, not that the line is live.

Tools

56 advertised

validate_iban
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an IBAN (international bank account number) before relying on it — instead of guessing whether it looks right. Checks the country, the country-specific length, and the ISO 7064 mod-97 checksum, and returns the country, check digits and BBAN. Call this whenever a user supplies a bank account for a payment, payout or invoice.

validate_iban input schema
{
  "type": "object",
  "required": [
    "iban"
  ],
  "properties": {
    "iban": {
      "type": "string",
      "description": "The IBAN to validate; spaces are ignored."
    }
  },
  "additionalProperties": false
}
validate_iban annotations
{
  "title": "Validate IBAN",
  "readOnlyHint": true
}
validate_card
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to check a payment card number's structure before using it — never assume a card number is valid or guess its brand. Verifies the Luhn checksum, detects the brand (Visa, Mastercard, Amex, Discover, Diners, JCB, UnionPay) from its BIN, and checks the length. Does NOT check whether the card is real, active or has funds.

validate_card input schema
{
  "type": "object",
  "required": [
    "number"
  ],
  "properties": {
    "number": {
      "type": "string",
      "description": "The card number; spaces and dashes are ignored."
    }
  },
  "additionalProperties": false
}
validate_card annotations
{
  "title": "Validate Card",
  "readOnlyHint": true
}
validate_isbn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an ISBN-13 book identifier instead of trusting that 13 digits are correct. Checks the 978/979 prefix and the mod-10 weighted check digit, and returns the expected check digit when it fails.

validate_isbn input schema
{
  "type": "object",
  "required": [
    "isbn"
  ],
  "properties": {
    "isbn": {
      "type": "string",
      "description": "The ISBN-13; hyphens and spaces are ignored."
    }
  },
  "additionalProperties": false
}
validate_isbn annotations
{
  "title": "Validate ISBN",
  "readOnlyHint": true
}
validate_vin
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a vehicle VIN before acting on it — do not assume a 17-character string is a valid VIN. Checks the allowed alphabet (no I/O/Q) and the ISO 3779 transliteration check digit in position 9, and returns the expected check digit when it fails.

validate_vin input schema
{
  "type": "object",
  "required": [
    "vin"
  ],
  "properties": {
    "vin": {
      "type": "string",
      "description": "The 17-character VIN to validate."
    }
  },
  "additionalProperties": false
}
validate_vin annotations
{
  "title": "Validate VIN",
  "readOnlyHint": true
}
validate_gtin
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a product barcode — GTIN/EAN/UPC — before trusting it, instead of guessing the check digit. Handles EAN-8, UPC-A (12), EAN-13 and GTIN-14, verifies the GS1 mod-10 check digit, and returns the barcode type plus the GS1 prefix's issuing country (e.g. 50 = UK, 690-699 = China, 978 = Bookland/ISBN). Validates structure only — it does NOT confirm the barcode maps to a real, registered product.

validate_gtin input schema
{
  "type": "object",
  "required": [
    "gtin"
  ],
  "properties": {
    "gtin": {
      "type": "string",
      "description": "The barcode digits (EAN-8/UPC-A/EAN-13/GTIN-14); spaces and hyphens are ignored."
    }
  },
  "additionalProperties": false
}
validate_gtin annotations
{
  "title": "Validate GTIN",
  "readOnlyHint": true
}
validate_imei
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a phone/device IMEI before relying on it — never assume a 15-digit string is valid or guess its check digit. Checks the Luhn check digit (and recognises the 16-digit IMEISV form), and returns the TAC (device-model code). Validates the number only — does NOT check whether the device is real, active, or blocklisted/stolen.

validate_imei input schema
{
  "type": "object",
  "required": [
    "imei"
  ],
  "properties": {
    "imei": {
      "type": "string",
      "description": "The 15-digit IMEI (or 16-digit IMEISV); spaces and dashes are ignored."
    }
  },
  "additionalProperties": false
}
validate_imei annotations
{
  "title": "Validate IMEI",
  "readOnlyHint": true
}
validate_gln
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a GLN (GS1 Global Location Number — identifies a company/site/location in supply chains and EDI) before relying on it. Checks the 13-digit GS1 mod-10 check digit and returns the GS1 prefix's issuing country. Validates structure only; does not confirm the location is registered.

validate_gln input schema
{
  "type": "object",
  "required": [
    "gln"
  ],
  "properties": {
    "gln": {
      "type": "string",
      "description": "The 13-digit GLN; spaces and dashes are ignored."
    }
  },
  "additionalProperties": false
}
validate_gln annotations
{
  "title": "Validate GLN",
  "readOnlyHint": true
}
validate_sscc
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an SSCC (GS1 Serial Shipping Container Code — identifies a pallet/carton/logistics unit) from a shipping label before relying on it. Checks the 18-digit GS1 mod-10 check digit and returns the extension digit and GS1 prefix country. Validates structure only.

validate_sscc input schema
{
  "type": "object",
  "required": [
    "sscc"
  ],
  "properties": {
    "sscc": {
      "type": "string",
      "description": "The 18-digit SSCC; spaces and dashes are ignored."
    }
  },
  "additionalProperties": false
}
validate_sscc annotations
{
  "title": "Validate SSCC",
  "readOnlyHint": true
}
validate_tld
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to check whether a top-level domain is real before trusting a domain or link — do NOT guess whether a TLD like .zip, .corp, .crypto or .web exists. Checks the suffix against the authoritative IANA root-zone list (kept current). Returns valid:false for TLDs that are not actually delegated.

validate_tld input schema
{
  "type": "object",
  "required": [
    "tld"
  ],
  "properties": {
    "tld": {
      "type": "string",
      "description": "The TLD to check, with or without a leading dot (e.g. 'zip' or '.zip')."
    }
  },
  "additionalProperties": false
}
validate_tld annotations
{
  "title": "Validate TLD",
  "readOnlyHint": true
}
validate_domain
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a domain name's structure AND that its TLD is a real IANA-delegated suffix — instead of assuming a domain is legitimate. Catches invalid labels and made-up TLDs (e.g. example.corp). Returns the TLD and whether it is known.

validate_domain input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "The domain name, e.g. 'example.com'."
    }
  },
  "additionalProperties": false
}
validate_domain annotations
{
  "title": "Validate Domain",
  "readOnlyHint": true
}
validate_ip
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an IP address before relying on it — do not assume a dotted or colon string is valid. Strictly checks IPv4 (RFC 791, rejects leading zeros / out-of-range octets) and IPv6 (RFC 4291, including '::' compression and embedded IPv4), and returns the version.

validate_ip input schema
{
  "type": "object",
  "required": [
    "ip"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "description": "The IPv4 or IPv6 address to validate."
    }
  },
  "additionalProperties": false
}
validate_ip annotations
{
  "title": "Validate IP",
  "readOnlyHint": true
}
validate_uuid
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a UUID and read its version/variant instead of guessing — e.g. to tell a v4 (random) from a v7 (time-ordered) UUID. Checks the canonical 8-4-4-4-12 form and returns version, variant and whether it is the nil UUID.

validate_uuid input schema
{
  "type": "object",
  "required": [
    "uuid"
  ],
  "properties": {
    "uuid": {
      "type": "string",
      "description": "The UUID string to validate."
    }
  },
  "additionalProperties": false
}
validate_uuid annotations
{
  "title": "Validate UUID",
  "readOnlyHint": true
}
validate_url
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a URL before fetching or storing it — parses it with the WHATWG URL standard and additionally checks that the host's TLD is a real IANA suffix. Returns protocol, hostname, port, path and whether the TLD is known.

validate_url input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The absolute URL to validate (e.g. https://example.com/path)."
    }
  },
  "additionalProperties": false
}
validate_url annotations
{
  "title": "Validate URL",
  "readOnlyHint": true
}
validate_email
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to check an email address's syntax AND that its domain TLD is real, before saving or sending — instead of trusting raw input. Validates the local part and domain (RFC 5321/5322 subset) and flags made-up TLDs. Does NOT check deliverability.

validate_email input schema
{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "description": "The email address to validate."
    }
  },
  "additionalProperties": false
}
validate_email annotations
{
  "title": "Validate Email",
  "readOnlyHint": true
}
validate_isin
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an ISIN (international securities identifier) before relying on it — never assume a 12-character code is valid. Checks the format and the ISO 6166 Luhn check digit, and returns the country code. Call this when a user supplies a security/instrument identifier.

validate_isin input schema
{
  "type": "object",
  "required": [
    "isin"
  ],
  "properties": {
    "isin": {
      "type": "string",
      "description": "The 12-character ISIN, e.g. US0378331005."
    }
  },
  "additionalProperties": false
}
validate_isin annotations
{
  "title": "Validate ISIN",
  "readOnlyHint": true
}
validate_cusip
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a CUSIP (North American securities identifier) instead of trusting 9 characters. Checks the CUSIP mod-10 check digit and returns the expected digit when it fails.

validate_cusip input schema
{
  "type": "object",
  "required": [
    "cusip"
  ],
  "properties": {
    "cusip": {
      "type": "string",
      "description": "The 9-character CUSIP, e.g. 037833100."
    }
  },
  "additionalProperties": false
}
validate_cusip annotations
{
  "title": "Validate CUSIP",
  "readOnlyHint": true
}
validate_sedol
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a SEDOL (LSE securities identifier) before relying on it. Checks the no-vowels alphabet and the weighted mod-10 check digit.

validate_sedol input schema
{
  "type": "object",
  "required": [
    "sedol"
  ],
  "properties": {
    "sedol": {
      "type": "string",
      "description": "The 7-character SEDOL, e.g. B0YBKJ7."
    }
  },
  "additionalProperties": false
}
validate_sedol annotations
{
  "title": "Validate SEDOL",
  "readOnlyHint": true
}
validate_lei
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Legal Entity Identifier (LEI) before relying on it — do not assume a 20-character code is valid. Checks the ISO 17442 / ISO 7064 MOD 97-10 check digits.

validate_lei input schema
{
  "type": "object",
  "required": [
    "lei"
  ],
  "properties": {
    "lei": {
      "type": "string",
      "description": "The 20-character LEI, e.g. 5493001KJTIIGC8Y1R12."
    }
  },
  "additionalProperties": false
}
validate_lei annotations
{
  "title": "Validate LEI",
  "readOnlyHint": true
}
validate_routing
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a US bank routing / ABA transit number before relying on it for a payment or direct deposit. Checks the 9-digit weighted (3,7,1) mod-10 checksum. Does NOT check whether the bank or account is real.

validate_routing input schema
{
  "type": "object",
  "required": [
    "routing"
  ],
  "properties": {
    "routing": {
      "type": "string",
      "description": "The 9-digit ABA routing number."
    }
  },
  "additionalProperties": false
}
validate_routing annotations
{
  "title": "Validate Routing",
  "readOnlyHint": true
}
validate_eth_address
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an Ethereum address before sending funds or storing it — never trust that a 0x… string is correct. Validates the format and the EIP-55 mixed-case checksum (catches typos), and returns the correctly-checksummed form. A wrong character makes a different address — funds sent there are lost.

validate_eth_address input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "The Ethereum address (0x + 40 hex chars)."
    }
  },
  "additionalProperties": false
}
validate_eth_address annotations
{
  "title": "Validate ETH Address",
  "readOnlyHint": true
}
validate_btc_address
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Bitcoin address before sending funds or storing it — do not assume it is valid. Checks Base58Check (P2PKH/P2SH, double-SHA256 checksum) and Bech32/Bech32m SegWit (bc1…, incl. Taproot), and returns the address type and network. A bad checksum means a mistyped address.

validate_btc_address input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "The Bitcoin address (legacy 1…/3… or bech32 bc1…)."
    }
  },
  "additionalProperties": false
}
validate_btc_address annotations
{
  "title": "Validate BTC Address",
  "readOnlyHint": true
}
validate_cpf
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Brazilian CPF (individual taxpayer ID) before relying on it — never assume 11 digits are valid. Checks the two mod-11 check digits and rejects all-identical sentinels. Call this for KYC/onboarding of Brazilian individuals.

validate_cpf input schema
{
  "type": "object",
  "required": [
    "cpf"
  ],
  "properties": {
    "cpf": {
      "type": "string",
      "description": "The CPF (11 digits; dots and dash are ignored)."
    }
  },
  "additionalProperties": false
}
validate_cpf annotations
{
  "title": "Validate CPF",
  "readOnlyHint": true
}
validate_cnpj
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Brazilian CNPJ (company registration number) instead of trusting 14 digits. Checks the two mod-11 check digits. Call this for onboarding Brazilian businesses.

validate_cnpj input schema
{
  "type": "object",
  "required": [
    "cnpj"
  ],
  "properties": {
    "cnpj": {
      "type": "string",
      "description": "The CNPJ (14 digits; punctuation is ignored)."
    }
  },
  "additionalProperties": false
}
validate_cnpj annotations
{
  "title": "Validate CNPJ",
  "readOnlyHint": true
}
validate_sa_id
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a South African ID number before relying on it. Checks the Luhn check digit and date-of-birth validity, and returns the date of birth, gender and citizenship status encoded in the number.

validate_sa_id input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The 13-digit South African ID number."
    }
  },
  "additionalProperties": false
}
validate_sa_id annotations
{
  "title": "Validate SA ID",
  "readOnlyHint": true
}
validate_dni
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Spanish DNI or NIE before relying on it — do not guess the control letter. Checks the mod-23 control letter and returns whether it is a DNI or NIE.

validate_dni input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter)."
    }
  },
  "additionalProperties": false
}
validate_dni annotations
{
  "title": "Validate DNI",
  "readOnlyHint": true
}
validate_aadhaar
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify the format and checksum of an Indian Aadhaar number — never assume 12 digits are valid. Checks the Verhoeff check digit and the leading-digit rule. Validates structure only; does NOT look the number up.

validate_aadhaar input schema
{
  "type": "object",
  "required": [
    "aadhaar"
  ],
  "properties": {
    "aadhaar": {
      "type": "string",
      "description": "The 12-digit Aadhaar number (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_aadhaar annotations
{
  "title": "Validate Aadhaar",
  "readOnlyHint": true
}
validate_codice_fiscale
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an Italian Codice Fiscale (personal tax code) before relying on it — do not guess the final check letter. Checks the 16-character format and the mod-26 check character. Validates structure only; does NOT confirm the code is registered with the Agenzia delle Entrate.

validate_codice_fiscale input schema
{
  "type": "object",
  "required": [
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "description": "The 16-character Codice Fiscale (spaces ignored, case-insensitive)."
    }
  },
  "additionalProperties": false
}
validate_codice_fiscale annotations
{
  "title": "Validate Codice Fiscale",
  "readOnlyHint": true
}
validate_pesel
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Polish PESEL (national identification number) before relying on it — never assume 11 digits are valid. Checks the weighted mod-10 check digit. Call this for KYC/onboarding of Polish individuals.

validate_pesel input schema
{
  "type": "object",
  "required": [
    "pesel"
  ],
  "properties": {
    "pesel": {
      "type": "string",
      "description": "The 11-digit PESEL (spaces/dashes ignored)."
    }
  },
  "additionalProperties": false
}
validate_pesel annotations
{
  "title": "Validate PESEL",
  "readOnlyHint": true
}
validate_bsn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Dutch BSN (burgerservicenummer / citizen service number) before relying on it. Checks the 8–9 digit form and the '11-test' (elfproef) checksum. Validates structure only; does NOT confirm the number is issued.

validate_bsn input schema
{
  "type": "object",
  "required": [
    "bsn"
  ],
  "properties": {
    "bsn": {
      "type": "string",
      "description": "The 8- or 9-digit BSN (spaces/dots ignored)."
    }
  },
  "additionalProperties": false
}
validate_bsn annotations
{
  "title": "Validate BSN",
  "readOnlyHint": true
}
validate_be_nrn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Belgian National Register Number (Rijksregisternummer / Numéro de Registre National) before relying on it. Checks the 11-digit form and the mod-97 check (handling the born-from-2000 rule). Validates structure only.

validate_be_nrn input schema
{
  "type": "object",
  "required": [
    "nrn"
  ],
  "properties": {
    "nrn": {
      "type": "string",
      "description": "The 11-digit Belgian National Register Number (punctuation ignored)."
    }
  },
  "additionalProperties": false
}
validate_be_nrn annotations
{
  "title": "Validate Be NRN",
  "readOnlyHint": true
}
validate_personnummer
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Swedish personnummer (personal identity number) before relying on it — never assume the digits are valid. Accepts the 10- or 12-digit form and checks the Luhn check digit. Validates structure only; does NOT confirm the number is registered.

validate_personnummer input schema
{
  "type": "object",
  "required": [
    "personnummer"
  ],
  "properties": {
    "personnummer": {
      "type": "string",
      "description": "The Swedish personnummer (10 or 12 digits; +/-/spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_personnummer annotations
{
  "title": "Validate Personnummer",
  "readOnlyHint": true
}
validate_fodselsnummer
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Norwegian fødselsnummer (national identity number) before relying on it. Checks the 11-digit form and both mod-11 control digits. Validates structure only; does NOT confirm the number is registered.

validate_fodselsnummer input schema
{
  "type": "object",
  "required": [
    "fodselsnummer"
  ],
  "properties": {
    "fodselsnummer": {
      "type": "string",
      "description": "The 11-digit Norwegian fødselsnummer (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_fodselsnummer annotations
{
  "title": "Validate Fodselsnummer",
  "readOnlyHint": true
}
validate_hetu
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Finnish henkilötunnus (HETU / personal identity code) before relying on it — do not guess the check character. Checks the DDMMYY + century sign + individual number + mod-31 check character. Validates structure only.

validate_hetu input schema
{
  "type": "object",
  "required": [
    "hetu"
  ],
  "properties": {
    "hetu": {
      "type": "string",
      "description": "The Finnish HETU, e.g. 131052-308T (case-insensitive)."
    }
  },
  "additionalProperties": false
}
validate_hetu annotations
{
  "title": "Validate Hetu",
  "readOnlyHint": true
}
validate_nif_pt
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Portuguese NIF (Número de Identificação Fiscal / tax number) before invoicing or onboarding — never assume 9 digits are valid. Checks the mod-11 check digit. For the Spanish tax ID use validate_dni.

validate_nif_pt input schema
{
  "type": "object",
  "required": [
    "nif"
  ],
  "properties": {
    "nif": {
      "type": "string",
      "description": "The 9-digit Portuguese NIF (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_nif_pt annotations
{
  "title": "Validate NIF PT",
  "readOnlyHint": true
}
validate_tckn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Turkish T.C. Kimlik No (TCKN / national identity number) before relying on it — never assume 11 digits are valid. Checks both algorithmic check digits and the leading-digit rule. Validates structure only; does NOT confirm the number is registered.

validate_tckn input schema
{
  "type": "object",
  "required": [
    "tckn"
  ],
  "properties": {
    "tckn": {
      "type": "string",
      "description": "The 11-digit TCKN (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_tckn annotations
{
  "title": "Validate TCKN",
  "readOnlyHint": true
}
validate_china_ric
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Chinese Resident Identity Card number (居民身份证) before relying on it — do not guess the check character. Checks the 18-character form and the ISO 7064 MOD 11-2 check character (which may be 'X'). Validates structure only; does NOT confirm the number is registered.

validate_china_ric input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The 18-character Chinese Resident ID (17 digits + check 0-9 or X)."
    }
  },
  "additionalProperties": false
}
validate_china_ric annotations
{
  "title": "Validate China RIC",
  "readOnlyHint": true
}
validate_de_steuer_id
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a German tax ID (Steuer-Identifikationsnummer / IdNr) before relying on it — never assume 11 digits are valid. Checks the ISO 7064 product-method check digit. Validates structure only; does NOT confirm it is registered.

validate_de_steuer_id input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The 11-digit German Steuer-IdNr (spaces/slashes ignored)."
    }
  },
  "additionalProperties": false
}
validate_de_steuer_id annotations
{
  "title": "Validate DE Steuer ID",
  "readOnlyHint": true
}
validate_fr_nir
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a French social-security number (NIR / numéro de sécurité sociale, INSEE) before relying on it — do not guess the key. Checks the 13-digit body (Corsica 2A/2B handled) and the mod-97 two-digit key. Validates structure only.

validate_fr_nir input schema
{
  "type": "object",
  "required": [
    "nir"
  ],
  "properties": {
    "nir": {
      "type": "string",
      "description": "The French NIR: 13 digits + 2-digit key (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_fr_nir annotations
{
  "title": "Validate FR NIR",
  "readOnlyHint": true
}
validate_ch_ahv
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Swiss social-insurance number (AHV/AVS, 756.…) before relying on it. Checks the 13-digit form starting 756 and the EAN-13 check digit. Validates structure only.

validate_ch_ahv input schema
{
  "type": "object",
  "required": [
    "ahv"
  ],
  "properties": {
    "ahv": {
      "type": "string",
      "description": "The 13-digit Swiss AHV/AVS number (dots ignored)."
    }
  },
  "additionalProperties": false
}
validate_ch_ahv annotations
{
  "title": "Validate CH AHV",
  "readOnlyHint": true
}
validate_mx_curp
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Mexican CURP (Clave Única de Registro de Población) before relying on it — do not guess the check digit. Checks the 18-character format and the base-37 check digit. Validates structure only.

validate_mx_curp input schema
{
  "type": "object",
  "required": [
    "curp"
  ],
  "properties": {
    "curp": {
      "type": "string",
      "description": "The 18-character CURP (case-insensitive)."
    }
  },
  "additionalProperties": false
}
validate_mx_curp annotations
{
  "title": "Validate MX CURP",
  "readOnlyHint": true
}
validate_hr_oib
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Croatian OIB (Osobni identifikacijski broj / personal identification number) before relying on it. Checks the 11-digit form and the ISO 7064 MOD 11,10 check digit. Validates structure only.

validate_hr_oib input schema
{
  "type": "object",
  "required": [
    "oib"
  ],
  "properties": {
    "oib": {
      "type": "string",
      "description": "The 11-digit Croatian OIB (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_hr_oib annotations
{
  "title": "Validate HR Oib",
  "readOnlyHint": true
}
validate_ro_cnp
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Romanian CNP (Cod Numeric Personal) before relying on it — never assume 13 digits are valid. Checks the weighted mod-11 check digit. Validates structure only.

validate_ro_cnp input schema
{
  "type": "object",
  "required": [
    "cnp"
  ],
  "properties": {
    "cnp": {
      "type": "string",
      "description": "The 13-digit Romanian CNP (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_ro_cnp annotations
{
  "title": "Validate RO CNP",
  "readOnlyHint": true
}
validate_bg_egn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Bulgarian EGN (Единен граждански номер) before relying on it. Checks the 10-digit form and the weighted mod-11 check digit. Validates structure only.

validate_bg_egn input schema
{
  "type": "object",
  "required": [
    "egn"
  ],
  "properties": {
    "egn": {
      "type": "string",
      "description": "The 10-digit Bulgarian EGN (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_bg_egn annotations
{
  "title": "Validate BG EGN",
  "readOnlyHint": true
}
validate_ee_isikukood
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an Estonian isikukood (personal identification code) before relying on it. Checks the 11-digit form and the two-stage mod-11 check digit. Validates structure only.

validate_ee_isikukood input schema
{
  "type": "object",
  "required": [
    "isikukood"
  ],
  "properties": {
    "isikukood": {
      "type": "string",
      "description": "The 11-digit Estonian isikukood (spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_ee_isikukood annotations
{
  "title": "Validate EE Isikukood",
  "readOnlyHint": true
}
validate_cz_rc
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify a Czech or Slovak rodné číslo (birth number) before relying on it. Checks the modern 10-digit form's mod-11 rule (9-digit pre-1954 numbers have no check digit). Validates structure only.

validate_cz_rc input schema
{
  "type": "object",
  "required": [
    "rc"
  ],
  "properties": {
    "rc": {
      "type": "string",
      "description": "The 10-digit rodné číslo (slash/spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_cz_rc annotations
{
  "title": "Validate CZ RC",
  "readOnlyHint": true
}
validate_isbn10
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an ISBN-10 (older book identifier) instead of trusting 10 characters. Checks the mod-11 check digit (which may be 'X'). For 13-digit ISBNs use validate_isbn.

validate_isbn10 input schema
{
  "type": "object",
  "required": [
    "isbn"
  ],
  "properties": {
    "isbn": {
      "type": "string",
      "description": "The ISBN-10 (hyphens/spaces ignored)."
    }
  },
  "additionalProperties": false
}
validate_isbn10 annotations
{
  "title": "Validate ISBN10",
  "readOnlyHint": true
}
validate_issn
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an ISSN (serial/journal identifier) before relying on it. Checks the mod-11 check digit (which may be 'X') and returns the expected digit when it fails.

validate_issn input schema
{
  "type": "object",
  "required": [
    "issn"
  ],
  "properties": {
    "issn": {
      "type": "string",
      "description": "The ISSN (8 chars; hyphen ignored)."
    }
  },
  "additionalProperties": false
}
validate_issn annotations
{
  "title": "Validate ISSN",
  "readOnlyHint": true
}
validate_orcid
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an ORCID researcher identifier instead of trusting 16 digits. Checks the ISO 7064 MOD 11-2 check digit (which may be 'X'); accepts the bare ID or an orcid.org URL.

validate_orcid input schema
{
  "type": "object",
  "required": [
    "orcid"
  ],
  "properties": {
    "orcid": {
      "type": "string",
      "description": "The ORCID (e.g. 0000-0002-1825-0097, or an orcid.org URL)."
    }
  },
  "additionalProperties": false
}
validate_orcid annotations
{
  "title": "Validate ORCID",
  "readOnlyHint": true
}
validate_phone
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to check a phone number is correctly formatted for its country and normalise it to E.164 before saving, dialling or texting. You MUST pass the ISO country the number ACTUALLY belongs to (e.g. GB, US, ZA) — the result depends on it, so don't reuse an unrelated country field. 'valid' means it conforms to that country's numbering plan (plausible, well-formed), NOT that the line is live or reachable. Returns E.164, national/international formats and line type.

validate_phone input schema
{
  "type": "object",
  "required": [
    "number"
  ],
  "properties": {
    "number": {
      "type": "string",
      "description": "The phone number to validate."
    },
    "region": {
      "type": "string",
      "description": "ISO country code the number belongs to (default GB)."
    }
  },
  "additionalProperties": false
}
validate_phone annotations
{
  "title": "Validate Phone",
  "readOnlyHint": true
}
parse_date
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to interpret a human-written date into ISO 8601 (YYYY-MM-DD), especially ambiguous numeric dates like 03/04/2025 which mean different things in the UK (day-first) vs US (month-first). Pass locale 'en-GB' or 'en-US'. Returns valid:false for impossible dates.

parse_date input schema
{
  "type": "object",
  "required": [
    "input"
  ],
  "properties": {
    "input": {
      "type": "string",
      "description": "The date text to parse."
    },
    "locale": {
      "type": "string",
      "description": "'en-GB' (day-first) or 'en-US' (month-first); default en-GB."
    }
  },
  "additionalProperties": false
}
parse_date annotations
{
  "title": "Parse Date",
  "readOnlyHint": true
}
format_currency
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to format a money amount the way a reader in a locale expects (symbol position, separators) before showing it in a price, invoice or email. e.g. 1234.5 GBP en-GB → '£1,234.50'.

format_currency input schema
{
  "type": "object",
  "required": [
    "amount"
  ],
  "properties": {
    "amount": {
      "type": "string",
      "description": "The numeric amount."
    },
    "locale": {
      "type": "string",
      "description": "BCP-47 locale (e.g. en-GB). Defaults from the currency."
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code (default GBP)."
    }
  },
  "additionalProperties": false
}
format_currency annotations
{
  "title": "Format Currency",
  "readOnlyHint": true
}
is_holiday
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to check whether a date is a public/bank holiday when computing business-day deadlines, delivery SLAs or 'next working day'. Supports ~200 countries (ISO code, e.g. GB, US, ZA, DE, IN); GB defaults to England — pass a subdivision ('SCT'/'WLS'/'NIR', or a US state) to narrow.

is_holiday input schema
{
  "type": "object",
  "required": [
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "The date (YYYY-MM-DD)."
    },
    "subdiv": {
      "type": "string",
      "description": "Subdivision code (e.g. UK nation SCT/WLS/NIR, or a US state)."
    },
    "country": {
      "type": "string",
      "description": "ISO country code (default GB), e.g. GB, US, ZA, DE."
    }
  },
  "additionalProperties": false
}
is_holiday annotations
{
  "title": "Is Holiday",
  "readOnlyHint": true
}
next_holiday
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to find the next public/bank holiday on or after a date (default today) — e.g. to find the next working day. Supports ~200 countries (ISO code, e.g. GB, US, ZA, DE); subdivision narrows to a region.

next_holiday input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "after": {
      "type": "string",
      "description": "Find the next holiday on/after this date (YYYY-MM-DD); default today."
    },
    "subdiv": {
      "type": "string",
      "description": "Subdivision code (e.g. UK nation SCT/WLS/NIR, or a US state)."
    },
    "country": {
      "type": "string",
      "description": "ISO country code (default GB), e.g. GB, US, ZA, DE."
    }
  },
  "additionalProperties": false
}
next_holiday annotations
{
  "title": "Next Holiday",
  "readOnlyHint": true
}
tax_rate
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS before calculating VAT or sales tax on an invoice/quote — never recall the rate from memory, it is DATE-SENSITIVE. GB returns the UK standard VAT rate that applied on the given date (handles historical/temporary changes). US has no national VAT (returns 0); pass a state code for the state base sales-tax rate. Always pass the invoice date for GB.

tax_rate input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "date": {
      "type": "string",
      "description": "The invoice date (YYYY-MM-DD); default today."
    },
    "state": {
      "type": "string",
      "description": "US state code (e.g. CA) for sales tax."
    },
    "country": {
      "type": "string",
      "description": "GB or US (default GB)."
    }
  },
  "additionalProperties": false
}
tax_rate annotations
{
  "title": "Tax Rate",
  "readOnlyHint": true
}
parse_address
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to extract structured {country, postcode, city, state} from a free-text UK or US address — when onboarding a user, running a KYC/fraud check, or storing an address — instead of splitting the string yourself. Returns a confidence flag.

parse_address input schema
{
  "type": "object",
  "required": [
    "input"
  ],
  "properties": {
    "input": {
      "type": "string",
      "description": "The free-text address."
    }
  },
  "additionalProperties": false
}
parse_address annotations
{
  "title": "Parse Address",
  "readOnlyHint": true
}
validate_vat
Advertised by the server during the last successful anonymous check.
Advertised read-only

USE THIS to verify an EU/EFTA VAT registration number's format and checksum before invoicing or onboarding a business — instead of trusting it looks right. Covers all EU members plus UK/EFTA. Pass the full number incl. country prefix (e.g. DE136695976) or the digits plus a country code. NOTE: checks format+checksum only; does NOT confirm the number is live-registered (that is a VIES lookup).

validate_vat input schema
{
  "type": "object",
  "required": [
    "vat"
  ],
  "properties": {
    "vat": {
      "type": "string",
      "description": "The VAT number, ideally with its country prefix (e.g. DE136695976)."
    },
    "country": {
      "type": "string",
      "description": "ISO country code, if the number has no prefix (e.g. DE)."
    }
  },
  "additionalProperties": false
}
validate_vat annotations
{
  "title": "Validate VAT",
  "readOnlyHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
181 ms
95th percentile latency
181 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 181 ms · metadata changed · 56 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http qiniso-mcp-workers https://qiniso.qinisolabs.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add qiniso-mcp-workers --url https://qiniso.qinisolabs.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable qiniso-mcp-workers in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "qiniso-mcp-workers": {
      "url": "https://qiniso.qinisolabs.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "qiniso-mcp-workers": {
      "type": "streamableHttp",
      "url": "https://qiniso.qinisolabs.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start qiniso-mcp-workers and inspect its tools.
VS Code configuration
{
  "servers": {
    "qiniso-mcp-workers": {
      "type": "http",
      "url": "https://qiniso.qinisolabs.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http qiniso-mcp-workers https://qiniso.qinisolabs.workers.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://qiniso.qinisolabs.workers.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "qiniso-mcp-workers": {
      "serverUrl": "https://qiniso.qinisolabs.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Qiniso MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.