ID & Format Oracle
Validate IBAN, BIC, VAT, national IDs, phones, postal codes offline; 240+ identifiers.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"id-format-oracle": {
"url": "https://idcheck.noahsarch.tech/mcp"
}
}
}Remote endpoints
https://idcheck.noahsarch.tech/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
π’validate_identifier(number, code)
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).
Input Schema
{
"type": "object",
"properties": {
"number": {
"description": "The identifier as written (spaces, dashes and dots are tolerated).",
"title": "Number",
"type": "string"
},
"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.",
"title": "Code",
"type": "string"
}
},
"required": [
"number",
"code"
],
"title": "validate_identifierArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "validate_identifierDictOutput"
}π’list_identifiers(country, category)
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).
Input Schema
{
"type": "object",
"properties": {
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"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.",
"title": "Country"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter: personal | tax | company | bank | securities | product | device | vehicle | postal | algorithm | other.",
"title": "Category"
}
},
"title": "list_identifiersArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "list_identifiersDictOutput"
}π’detect_identifier(number, country)
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).
Input Schema
{
"type": "object",
"properties": {
"number": {
"description": "The unknown identifier.",
"title": "Number",
"type": "string"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO 3166-1 alpha-2 country whose national identifiers should be tried as well. Strongly recommended.",
"title": "Country"
}
},
"required": [
"number"
],
"title": "detect_identifierArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "detect_identifierDictOutput"
}π’validate_iban(iban)
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).
Input Schema
{
"type": "object",
"properties": {
"iban": {
"description": "IBAN with or without spaces, e.g. 'AE07 0331 2345 6789 0123 456'.",
"title": "Iban",
"type": "string"
}
},
"required": [
"iban"
],
"title": "validate_ibanArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "validate_ibanDictOutput"
}π’validate_bic(bic)
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).
Input Schema
{
"type": "object",
"properties": {
"bic": {
"description": "BIC / SWIFT code, 8 or 11 characters, e.g. 'EBILAEAD'.",
"title": "Bic",
"type": "string"
}
},
"required": [
"bic"
],
"title": "validate_bicArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "validate_bicDictOutput"
}π’validate_phone(number, default_region, language)
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).
Input Schema
{
"type": "object",
"properties": {
"number": {
"description": "Phone number as written; international form '+971 50 123 4567' needs no region.",
"title": "Number",
"type": "string"
},
"default_region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO 3166-1 alpha-2 region used to interpret numbers written without '+', e.g. 'AE'.",
"title": "Default Region"
},
"language": {
"default": "en",
"description": "Language for location/carrier names, e.g. 'en', 'ar'.",
"title": "Language",
"type": "string"
}
},
"required": [
"number"
],
"title": "validate_phoneArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "validate_phoneDictOutput"
}π’validate_postal_code(code, country)
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).
Input Schema
{
"type": "object",
"properties": {
"code": {
"description": "Postal / ZIP code as written.",
"title": "Code",
"type": "string"
},
"country": {
"description": "ISO 3166-1 alpha-2 country code, e.g. 'SA', 'GB', 'US'.",
"title": "Country",
"type": "string"
}
},
"required": [
"code",
"country"
],
"title": "validate_postal_codeArguments"
}Output Schema
{
"type": "object",
"additionalProperties": true,
"title": "validate_postal_codeDictOutput"
}Community
Evidence