ID & Format Oracle

Validate IBAN, BIC, VAT, national IDs, phones, postal codes offline; 240+ identifiers.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,938Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.51% of 128k context)

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-http

What it can do

Tool inventory

Tools (7)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools