Validates and normalizes Japanese corporate numbers and invoice registration numbers (format only).
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by MCP Jp Corporate Id.
validate_corporate_numberVerifies the check digit of a 13-digit corporate number
calculate_check_digitComputes the check digit for a 12-digit company registration number and derives the 13-digit corporate number
validate_invoice_numberValidates a qualified invoice registration number ("T" + 13 digits)
parse_corporate_numberBreaks down the structure of a corporate number (category, registry office code, organization type, serial number)
normalize_company_nameNormalizes company-name notation (ζ ͺεΌδΌη€Ύ/(ζ ͺ)/γ± etc., prefix/suffix placement, legacy kanji forms)
generate_matching_keyGenerates a normalized key for company-name deduplication/matching
An MCP (Model Context Protocol) server that validates and normalizes Japanese corporate numbers (houjin bangou) and qualified invoice issuer registration numbers, and normalizes/matches company names across common notation variants.
No network access is used at all (v1 calls no external APIs). Every check is done with formulas and dictionary data embedded in the code.
calculate_check_digit always includes a caution about this in its response.| Tool | Description |
|---|---|
validate_corporate_number | Verifies the check digit of a 13-digit corporate number |
calculate_check_digit | Computes the check digit for a 12-digit company registration number and derives the 13-digit corporate number |
validate_invoice_number | Validates a qualified invoice registration number ("T" + 13 digits) |
parse_corporate_number | Breaks down the structure of a corporate number (category, registry office code, organization type, serial number) |
normalize_company_name | Normalizes company-name notation (ζ ͺεΌδΌη€Ύ/(ζ ͺ)/γ± etc., prefix/suffix placement, legacy kanji forms) |
generate_matching_key | Generates a normalized key for company-name deduplication/matching |
compare_company_names | Judges whether two company names likely refer to the same entity (likely_different only under a strict, narrow condition; returns "unknown" whenever it cannot tell) |
Every tool's response includes the primary sources (sources) behind its logic.
Verifies whether the check digit of a 13-digit corporate number is correct. Accepts full-width digits, hyphens,
and whitespace, which are normalized before validation. If the normalized length isn't 13 digits, or the check
digit doesn't match, the tool returns valid: false rather than throwing.
Computes the check digit from a 12-digit company registration number (assigned based on commercial registry records) and derives the 13-digit corporate number. Throws if the normalized input isn't exactly 12 digits (no guessing or zero-padding).
Caution: a 12-digit number could just as easily be a My Number (individual number) as a company registration
number. Every response includes a caution field reminding callers never to submit a My Number. If the registry
office code portion falls outside the typical range (0100β5000) confirmed from primary sources, a note is added.
Validates a qualified invoice registration number ("T" + 13 digits).
entityType: "corporate".entityType: "individual_or_other",
validates format only, and explicitly states that mathematical verification isn't possible in this case.formatValid: false is returned (not an exception).Verifies the check digit of a 13-digit corporate number and then parses the structure of its 12-digit base number.
category: national_organ_legislative / national_organ_administrative / national_organ_judicial /
local_government / registered_corporation / unregistered_corporation_or_unincorporated_association /
unused_rangeregistered_corporation, returns registryOfficeCode (4 digits), organizationTypeCode (raw 2 digits),
and serialNumber (6 digits).Normalizes company-name notation and separates out the "body name" with the corporate form removed.
Dictionary limits: only major corporate forms and variant characters are covered. This is not exhaustive of every Japanese corporate form or notation variant; anything not in the dictionary is left unrecognized and stays in the body name as-is.
Uses normalize_company_name internally and strips whitespace from the body name to produce a matching key for
deduplication.
Normalizes both names and compares them, returning a verdict, a confidence level, and reasons.
Rather than hand-writing the verdict/confidence logic and the explanatory text separately, this tool derives both
from a single structured object, evidence, which is included as-is in the response:
| Field | Meaning |
|---|---|
scriptMismatch | Whether the body names differ so much in character type that comparison itself was judged meaningless |
bodyMatch | How the body names relate: "exact", "partial", or "none" |
commonTokens | The actual shared substring(s) found |
labelMatch | Whether the corporate-form label (ζ ͺεΌδΌη€Ύ/εεδΌη€Ύ/etc.) matches (null when not applicable) |
positionMatch | Whether the prefix/suffix placement matches (null when not applicable) |
distinguishing | The common-token + distinguishing-element pair behind a likely_different verdict (null otherwise) |
The decision logic (evidence β verdict/confidence) and the explanation logic (evidence β reasons) are
two separate functions that both read only from this same evidence object. Changing the decision rules
automatically keeps the explanation in sync, so it's structurally impossible to end up with a confident verdict
whose reasons/notes say "cannot be determined."
If the two body names differ greatly in character type β one is Latin-only while the other contains Japanese
(hiragana/katakana/kanji) β comparing them as strings is meaningless in principle. For example, "ζ₯ζ¬ι»ζ°ζ ͺεΌδΌη€Ύ"
(Nippon Electric Company) and "NEC" refer to the same company, yet their body-name strings share no characters at
all ("NEC" is an abbreviation that cannot be detected by string comparison). Whenever this script mismatch is
detected, the tool returns unknown (confidence: "low") immediately, before attempting any scoring.
likely_differentlikely_different is returned only when all of the following hold:
Example: "ζ±δΊ¬ι»ε" (Tokyo Electric Power) vs. "ζ±ει»ε" (Tohoku Electric Power) β they share the suffix "ι»ε" ("Electric Power") as a common token, with "ζ±δΊ¬" (Tokyo) and "ζ±ε" (Tohoku) as the distinguishing elements. Because both names follow the same naming pattern but diverge on a clear, region-identifying element, this tool treats them as likely different companies.
When this condition is not met (no shared part at all, or one name simply being a substring of the other), there
is no positive evidence of being different companies, so the tool always returns unknown. The mere fact that
two strings don't match or overlap is never, by itself, grounds for likely_different β string non-overlap is
not evidence of being different entities. The reasons text distinguishes "no shared part at all" from "only a
partial match" rather than using the same wording for both.
medium, and stays consistent with the verdict by constructionconfidence has only two possible values: "medium" and "low". **"high" has been removed.** Since the 2006 enactment of the Companies Act abolished the similar-trade-name restriction, two unrelated companies can be registered under the same name as long as their head-office locations differ β so a match based on trade name alone can never justify strong confidence ("high"`) in principle.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-jp-corporate-id)<a href="https://allmcps.com/mcp/mcp-jp-corporate-id"><img src="https://allmcps.com/api/badge/mcp-jp-corporate-id?style=directory" alt="MCP Jp Corporate Id on AllMCPs" /></a>