Validate IBAN, BIC, VAT, national IDs, phones, postal codes offline; 240+ identifiers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
API key from [email protected] (catalogue and free tools work without it)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Try every validator for the given country plus the international ones and return the types that accept the value, best first (checksum-bearing types rank above pattern-only ones). Use when a document or form field holds a number of unknown type. A match is structural, not proof of type. Example: number '12345678901', country 'KW'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
The unknown identifier.
ISO 3166-1 alpha-2 country whose national identifiers should be tried as well. Strongly recommended.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http id-format-oracle https://idcheck.noahsarch.tech/mcp
Headers
X-API-Key (optional, not in the config above): API key from [email protected] (catalogue and free tools work without it)Try every validator for the given country plus the international ones and return the types that accept the value, best first (checksum-bearing types rank above pattern-only ones). Use when a document or form field holds a number of unknown type. A match is structural, not proof of type. Example: number '12345678901', country 'KW'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| number* | string | The unknown identifier. |
| country | any | ISO 3166-1 alpha-2 country whose national identifiers should be tried as well. Strongly recommended. |
{
"type": "object",
"title": "detect_identifierArguments",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"title": "Number",
"description": "The unknown identifier."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "ISO 3166-1 alpha-2 country whose national identifiers should be tried as well. Strongly recommended."
}
}
}Catalogue of the identifier codes this service validates (250+ across 90 countries plus international standards), filterable by country and category. Free. Call it once to find the right code for validate_identifier. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| country | any | ISO 3166-1 alpha-2 country code to filter by (e.g. 'AE', 'DE'), or 'INTL' for international identifiers. Omit for all. |
| category | any | Filter: personal | tax | company | bank | securities | product | device | vehicle | postal | algorithm | other. |
{
"type": "object",
"title": "list_identifiersArguments",
"properties": {
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"default": null,
"description": "ISO 3166-1 alpha-2 country code to filter by (e.g. 'AE', 'DE'), or 'INTL' for international identifiers. Omit for all."
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Filter: personal | tax | company | bank | securities | product | device | vehicle | postal | algorithm | other."
}
}
}Validate a BIC (ISO 9362): structure, country code, test-BIC flag, bank and branch parts, and the bank name(s) where known. Example: 'EBILAEAD'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| bic* | string | BIC / SWIFT code, 8 or 11 characters, e.g. 'EBILAEAD'. |
{
"type": "object",
"title": "validate_bicArguments",
"required": [
"bic"
],
"properties": {
"bic": {
"type": "string",
"title": "Bic",
"description": "BIC / SWIFT code, 8 or 11 characters, e.g. 'EBILAEAD'."
}
}
}Validate an IBAN (ISO 13616 length, mod-97 and national BBAN rules) and return the country, bank code, branch, bank name and BIC where the bundled registry knows it, SEPA membership, compact and printed forms. Example: 'AE070331234567890123456'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| iban* | string | IBAN with or without spaces, e.g. 'AE07 0331 2345 6789 0123 456'. |
{
"type": "object",
"title": "validate_ibanArguments",
"required": [
"iban"
],
"properties": {
"iban": {
"type": "string",
"title": "Iban",
"description": "IBAN with or without spaces, e.g. 'AE07 0331 2345 6789 0123 456'."
}
}
}Validate and normalise one identifier whose type you know (format, length, dates and check digits). Returns valid, compact and formatted forms, the checks performed, a reason when invalid, and extracted details where the number encodes them (birth date, sex, holder type). Example: number '784-1990-1234567-1', code 'ae_emirates_id'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| code* | string | Identifier code from list_identifiers, e.g. 'ae_emirates_id', 'sa_national_id', 'fr.siret', 'gb.vat', 'us.ein', 'in.pan', 'br.cpf', 'isbn', 'lei', 'imei'. A bare suffix like 'siret' also works when unique. |
| number* | string | The identifier as written (spaces, dashes and dots are tolerated). |
{
"type": "object",
"title": "validate_identifierArguments",
"required": [
"number",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code",
"description": "Identifier code from list_identifiers, e.g. 'ae_emirates_id', 'sa_national_id', 'fr.siret', 'gb.vat', 'us.ein', 'in.pan', 'br.cpf', 'isbn', 'lei', 'imei'. A bare suffix like 'siret' also works when unique."
},
"number": {
"type": "string",
"title": "Number",
"description": "The identifier as written (spaces, dashes and dots are tolerated)."
}
}
}Parse a phone number for any country, say whether it is valid (matches a national numbering-plan pattern) or merely possible, and return E.164, international and national formats, number type (mobile/fixed_line/toll_free…), region, location, original carrier hint and time zones. Example: number '050 123 4567', default_region 'AE'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| number* | string | Phone number as written; international form '+971 50 123 4567' needs no region. |
| language | string | Language for location/carrier names, e.g. 'en', 'ar'. |
| default_region | any | ISO 3166-1 alpha-2 region used to interpret numbers written without '+', e.g. 'AE'. |
{
"type": "object",
"title": "validate_phoneArguments",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"title": "Number",
"description": "Phone number as written; international form '+971 50 123 4567' needs no region."
},
"language": {
"type": "string",
"title": "Language",
"default": "en",
"description": "Language for location/carrier names, e.g. 'en', 'ar'."
},
"default_region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Default Region",
"default": null,
"description": "ISO 3166-1 alpha-2 region used to interpret numbers written without '+', e.g. 'AE'."
}
}
}Check a postal/ZIP code against the national format for 158 countries, and say so when the country has no postal codes (UAE, Qatar…). Pattern check only. Example: code '11564', country 'SA'. Response: result plus data_confidence (high = check-digit algorithm from a public specification; medium = community-documented checksum or pattern-only; low = structure only), estimated_items[], sources[], data_version and a disclaimer (structural validation only — never proof that an identifier is issued or belongs to someone).
| Argument | Type | Description |
|---|---|---|
| code* | string | Postal / ZIP code as written. |
| country* | string | ISO 3166-1 alpha-2 country code, e.g. 'SA', 'GB', 'US'. |
{
"type": "object",
"title": "validate_postal_codeArguments",
"required": [
"code",
"country"
],
"properties": {
"code": {
"type": "string",
"title": "Code",
"description": "Postal / ZIP code as written."
},
"country": {
"type": "string",
"title": "Country",
"description": "ISO 3166-1 alpha-2 country code, e.g. 'SA', 'GB', 'US'."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 31, 2026.