ID & Format Oracle MCP
An MCP server providing offline validation and formatting for over 240 identifier types, including IBAN, BIC, VAT, national IDs, phones, and postal codes, with specific support for GCC regions like UAE and Saudi Arabia.
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.
https://idcheck.noahsarch.tech/mcpWhat you can do with it
- Validate IBAN and BIC codes offline
- Check VAT and tax number formats
- Verify national ID and phone number structures
- Detect unknown identifier types
Source and maintenance
Protocol and capabilities
- Server
- id-format-oracle 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 7 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
validate_identifier — Validate an identifier of a known type
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).
{
"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)."
}
}
}{
"type": "object",
"title": "validate_identifierDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_identifiers — List supported identifier types
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).
{
"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."
}
}
}{
"type": "object",
"title": "list_identifiersDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}detect_identifier — Detect what kind of identifier a value is
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).
{
"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."
}
}
}{
"type": "object",
"title": "detect_identifierDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_iban — Validate an 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).
{
"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'."
}
}
}{
"type": "object",
"title": "validate_ibanDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_bic — Validate a BIC / SWIFT code
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).
{
"type": "object",
"title": "validate_bicArguments",
"required": [
"bic"
],
"properties": {
"bic": {
"type": "string",
"title": "Bic",
"description": "BIC / SWIFT code, 8 or 11 characters, e.g. 'EBILAEAD'."
}
}
}{
"type": "object",
"title": "validate_bicDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_phone — Validate and format a phone number
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).
{
"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'."
}
}
}{
"type": "object",
"title": "validate_phoneDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}validate_postal_code — Validate a postal code format
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).
{
"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'."
}
}
}{
"type": "object",
"title": "validate_postal_codeDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
2 advertised
data_version — Data version
Current data/rules version.
id-format-oracle://data-versionmetrics — Aggregate metrics
Aggregate counters only (tool, status, latency bucket). No queries are logged.
id-format-oracle://metrics30-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
- 2162 ms
- 95th percentile latency
- 2162 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2162 ms · metadata changed · 7 tool(s), 2 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http id-format-oracle-mcp https://idcheck.noahsarch.tech/mcpCodex
codex mcp add id-format-oracle-mcp --url https://idcheck.noahsarch.tech/mcpCursor
{
"mcpServers": {
"id-format-oracle-mcp": {
"url": "https://idcheck.noahsarch.tech/mcp"
}
}
}Cline
{
"mcpServers": {
"id-format-oracle-mcp": {
"type": "streamableHttp",
"url": "https://idcheck.noahsarch.tech/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"id-format-oracle-mcp": {
"type": "http",
"url": "https://idcheck.noahsarch.tech/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http id-format-oracle-mcp https://idcheck.noahsarch.tech/mcpClaude Desktop
{
"mcpServers": {
"id-format-oracle-mcp": {
"url": "https://idcheck.noahsarch.tech/mcp"
}
}
}Windsurf
{
"mcpServers": {
"id-format-oracle-mcp": {
"serverUrl": "https://idcheck.noahsarch.tech/mcp"
}
}
}Let your agent find its tools
Find servers like ID & Format Oracle MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run ID & Format Oracle MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.