# Qiniso (remote · qiniso.qinisolabs.workers.dev)

Deterministic fact verification for AI agents — checksums & curated data, not guesses.

- Trust score: 64/100 (medium)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `qiniso.qinisolabs.workers.dev`: 64/100 (this document), [markdown](https://verifymcp.io/servers/qinisolabs-qiniso/qiniso.md), [page](https://verifymcp.io/servers/qinisolabs-qiniso/qiniso)
- npm · `@qinisolabs/qiniso`: 67/100, [markdown](https://verifymcp.io/servers/qinisolabs-qiniso/qinisolabs-qiniso.md), [page](https://verifymcp.io/servers/qinisolabs-qiniso/qinisolabs-qiniso)

## Channel facts

- Endpoint: `https://qiniso.qinisolabs.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 56 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 5306 tokens (~94/item across 56 items; 56 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http qinisolabs-qiniso https://qiniso.qinisolabs.workers.dev/mcp
```

### Codex

```toml
[mcp_servers.qinisolabs-qiniso]
url = "https://qiniso.qinisolabs.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qinisolabs-qiniso": {
      "type": "remote",
      "url": "https://qiniso.qinisolabs.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add qinisolabs-qiniso --url https://qiniso.qinisolabs.workers.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  qinisolabs-qiniso:
    url: "https://qiniso.qinisolabs.workers.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "qinisolabs-qiniso": {
      "type": "http",
      "url": "https://qiniso.qinisolabs.workers.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 62, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 62, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 62)

First indexed and scored.

## MCP tools (56)

### `validate_iban` (~99 tokens)

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.

Input parameters:

- `iban` (string, required): The IBAN to validate; spaces are ignored.

### `validate_card` (~103 tokens)

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.

Input parameters:

- `number` (string, required): The card number; spaces and dashes are ignored.

### `validate_isbn` (~74 tokens)

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.

Input parameters:

- `isbn` (string, required): The ISBN-13; hyphens and spaces are ignored.

### `validate_vin` (~83 tokens)

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.

Input parameters:

- `vin` (string, required): The 17-character VIN to validate.

### `validate_gtin` (~157 tokens)

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.

Input parameters:

- `gtin` (string, required): The barcode digits (EAN-8/UPC-A/EAN-13/GTIN-14); spaces and hyphens are ignored.

### `validate_imei` (~120 tokens)

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.

Input parameters:

- `imei` (string, required): The 15-digit IMEI (or 16-digit IMEISV); spaces and dashes are ignored.

### `validate_gln` (~96 tokens)

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.

Input parameters:

- `gln` (string, required): The 13-digit GLN; spaces and dashes are ignored.

### `validate_sscc` (~91 tokens)

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.

Input parameters:

- `sscc` (string, required): The 18-digit SSCC; spaces and dashes are ignored.

### `validate_tld` (~107 tokens)

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.

Input parameters:

- `tld` (string, required): The TLD to check, with or without a leading dot (e.g. 'zip' or '.zip').

### `validate_domain` (~85 tokens)

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.

Input parameters:

- `domain` (string, required): The domain name, e.g. 'example.com'.

### `validate_ip` (~91 tokens)

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.

Input parameters:

- `ip` (string, required): The IPv4 or IPv6 address to validate.

### `validate_uuid` (~85 tokens)

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.

Input parameters:

- `uuid` (string, required): The UUID string to validate.

### `validate_url` (~81 tokens)

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.

Input parameters:

- `url` (string, required): The absolute URL to validate (e.g. https://example.com/path).

### `validate_email` (~80 tokens)

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.

Input parameters:

- `email` (string, required): The email address to validate.

### `validate_isin` (~90 tokens)

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.

Input parameters:

- `isin` (string, required): The 12-character ISIN, e.g. US0378331005.

### `validate_cusip` (~73 tokens)

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.

Input parameters:

- `cusip` (string, required): The 9-character CUSIP, e.g. 037833100.

### `validate_sedol` (~69 tokens)

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.

Input parameters:

- `sedol` (string, required): The 7-character SEDOL, e.g. B0YBKJ7.

### `validate_lei` (~87 tokens)

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.

Input parameters:

- `lei` (string, required): The 20-character LEI, e.g. 5493001KJTIIGC8Y1R12.

### `validate_routing` (~75 tokens)

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.

Input parameters:

- `routing` (string, required): The 9-digit ABA routing number.

### `validate_eth_address` (~95 tokens)

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.

Input parameters:

- `address` (string, required): The Ethereum address (0x + 40 hex chars).

### `validate_btc_address` (~113 tokens)

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.

Input parameters:

- `address` (string, required): The Bitcoin address (legacy 1…/3… or bech32 bc1…).

### `validate_cpf` (~80 tokens)

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.

Input parameters:

- `cpf` (string, required): The CPF (11 digits; dots and dash are ignored).

### `validate_cnpj` (~63 tokens)

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.

Input parameters:

- `cnpj` (string, required): The CNPJ (14 digits; punctuation is ignored).

### `validate_sa_id` (~67 tokens)

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.

Input parameters:

- `id` (string, required): The 13-digit South African ID number.

### `validate_dni` (~75 tokens)

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.

Input parameters:

- `id` (string, required): The Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter).

### `validate_aadhaar` (~76 tokens)

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.

Input parameters:

- `aadhaar` (string, required): The 12-digit Aadhaar number (spaces ignored).

### `validate_codice_fiscale` (~98 tokens)

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.

Input parameters:

- `code` (string, required): The 16-character Codice Fiscale (spaces ignored, case-insensitive).

### `validate_pesel` (~75 tokens)

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.

Input parameters:

- `pesel` (string, required): The 11-digit PESEL (spaces/dashes ignored).

### `validate_bsn` (~90 tokens)

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.

Input parameters:

- `bsn` (string, required): The 8- or 9-digit BSN (spaces/dots ignored).

### `validate_be_nrn` (~86 tokens)

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.

Input parameters:

- `nrn` (string, required): The 11-digit Belgian National Register Number (punctuation ignored).

### `validate_personnummer` (~89 tokens)

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.

Input parameters:

- `personnummer` (string, required): The Swedish personnummer (10 or 12 digits; +/-/spaces ignored).

### `validate_fodselsnummer` (~79 tokens)

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.

Input parameters:

- `fodselsnummer` (string, required): The 11-digit Norwegian fødselsnummer (spaces ignored).

### `validate_hetu` (~91 tokens)

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.

Input parameters:

- `hetu` (string, required): The Finnish HETU, e.g. 131052-308T (case-insensitive).

### `validate_nif_pt` (~77 tokens)

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.

Input parameters:

- `nif` (string, required): The 9-digit Portuguese NIF (spaces ignored).

### `validate_tckn` (~88 tokens)

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.

Input parameters:

- `tckn` (string, required): The 11-digit TCKN (spaces ignored).

### `validate_china_ric` (~101 tokens)

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.

Input parameters:

- `id` (string, required): The 18-character Chinese Resident ID (17 digits + check 0-9 or X).

### `validate_de_steuer_id` (~88 tokens)

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.

Input parameters:

- `id` (string, required): The 11-digit German Steuer-IdNr (spaces/slashes ignored).

### `validate_fr_nir` (~96 tokens)

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.

Input parameters:

- `nir` (string, required): The French NIR: 13 digits + 2-digit key (spaces ignored).

### `validate_ch_ahv` (~82 tokens)

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.

Input parameters:

- `ahv` (string, required): The 13-digit Swiss AHV/AVS number (dots ignored).

### `validate_mx_curp` (~79 tokens)

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.

Input parameters:

- `curp` (string, required): The 18-character CURP (case-insensitive).

### `validate_hr_oib` (~80 tokens)

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.

Input parameters:

- `oib` (string, required): The 11-digit Croatian OIB (spaces ignored).

### `validate_ro_cnp` (~68 tokens)

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.

Input parameters:

- `cnp` (string, required): The 13-digit Romanian CNP (spaces ignored).

### `validate_bg_egn` (~69 tokens)

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.

Input parameters:

- `egn` (string, required): The 10-digit Bulgarian EGN (spaces ignored).

### `validate_ee_isikukood` (~78 tokens)

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.

Input parameters:

- `isikukood` (string, required): The 11-digit Estonian isikukood (spaces ignored).

### `validate_cz_rc` (~82 tokens)

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.

Input parameters:

- `rc` (string, required): The 10-digit rodné číslo (slash/spaces ignored).

### `validate_isbn10` (~73 tokens)

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.

Input parameters:

- `isbn` (string, required): The ISBN-10 (hyphens/spaces ignored).

### `validate_issn` (~69 tokens)

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.

Input parameters:

- `issn` (string, required): The ISSN (8 chars; hyphen ignored).

### `validate_orcid` (~90 tokens)

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.

Input parameters:

- `orcid` (string, required): The ORCID (e.g. 0000-0002-1825-0097, or an orcid.org URL).

### `validate_phone` (~146 tokens)

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.

Input parameters:

- `number` (string, required): The phone number to validate.
- `region` (string): ISO country code the number belongs to (default GB).

### `parse_date` (~115 tokens)

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.

Input parameters:

- `input` (string, required): The date text to parse.
- `locale` (string): 'en-GB' (day-first) or 'en-US' (month-first); default en-GB.

### `format_currency` (~111 tokens)

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

Input parameters:

- `amount` (string, required): The numeric amount.
- `currency` (string): ISO 4217 currency code (default GBP).
- `locale` (string): BCP-47 locale (e.g. en-GB). Defaults from the currency.

### `is_holiday` (~149 tokens)

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.

Input parameters:

- `country` (string): ISO country code (default GB), e.g. GB, US, ZA, DE.
- `date` (string, required): The date (YYYY-MM-DD).
- `subdiv` (string): Subdivision code (e.g. UK nation SCT/WLS/NIR, or a US state).

### `next_holiday` (~138 tokens)

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.

Input parameters:

- `after` (string): Find the next holiday on/after this date (YYYY-MM-DD); default today.
- `country` (string): ISO country code (default GB), e.g. GB, US, ZA, DE.
- `subdiv` (string): Subdivision code (e.g. UK nation SCT/WLS/NIR, or a US state).

### `tax_rate` (~134 tokens)

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.

Input parameters:

- `country` (string): GB or US (default GB).
- `date` (string): The invoice date (YYYY-MM-DD); default today.
- `state` (string): US state code (e.g. CA) for sales tax.

### `parse_address` (~72 tokens)

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.

Input parameters:

- `input` (string, required): The free-text address.

### `validate_vat` (~144 tokens)

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

Input parameters:

- `country` (string): ISO country code, if the number has no prefix (e.g. DE).
- `vat` (string, required): The VAT number, ideally with its country prefix (e.g. DE136695976).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/qinisolabs-qiniso/qiniso#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 63
- 2026-08-01: 63
- 2026-07-31: 62
- 2026-07-30: 64
- 2026-07-29: 64
- 2026-07-28: 63
- 2026-07-27: 62
- 2026-07-26: 62

## Links

- Remote endpoint: https://qiniso.qinisolabs.workers.dev/mcp
- Repository: https://github.com/qinisolabs/qiniso
- Website: https://qinisolabs.github.io/qiniso/
- Changelog RSS feed: https://verifymcp.io/servers/qinisolabs-qiniso/qiniso/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/qinisolabs-qiniso/qiniso/changelog.json
- HTML version of this page: https://verifymcp.io/servers/qinisolabs-qiniso/qiniso
