MCP server
Query the register directly from an AI agent — Claude, ChatGPT, or an agent in your IDE.
It is a wrapper over the REST API. Same data, same entitlements, no separate logic of its own, and the same API key.
Connect
One endpoint.
https://mcp.daichodo.com/mcp
Streamable HTTP transport, and the same bearer token the REST API takes.
{
"mcpServers": {
"daichodo": {
"url": "https://mcp.daichodo.com/mcp",
"headers": {
"Authorization": "Bearer dc_ live_ ..."
}
}
}
}
Create a key in the dashboard. A key beginning
dc_test_ reads a frozen fixture dataset — never the live register.
A request with no Authorization header gets a 401. Key validation is the REST
API's job; this server neither stores nor checks keys.
Tools
| Tool | What it does | Plan |
|---|---|---|
verify_ | Look up a registration number | all |
check_ | Was it valid on a given date | Standard |
lookup_company | Look up a corporate number | all |
validate_ | Check up to 100 numbers' format at once | all |
get_ | Plan and remaining allowance | all |
The tool list is identical on every plan. Calling one your plan does not include returns a clear error naming the plan you need.
Try it
Ask the agent in plain language.
Is T8000000000001 a registered qualified invoice issuer, and was it valid on 2024-06-30?
Registration numbers are accepted with or without the T, with or without
hyphens, and with full-width digits — however they came out of the invoice or
the spreadsheet.
Checking a list
Reach for validate_ first when you have more than a few. Format and
check-digit validation is free and does not consume your allowance. Screening a
batch and then looking up only what passes saves both the agent's context and
your monthly lookups, compared with looking up every row one at a time.
Well-formed is not the same as registered. validate_ answers the first;
verify_ answers the second.
Sole traders
The NTA does not publish names for sole traders (個人事業者), who are roughly half the register.
Those records return name_ in place of a name. This is not a
miss. The registration exists and is valid; only the name is unpublished. It
is stated explicitly so an agent does not report the number as not found.
Limits
There is a per-minute ceiling on calls. Exceeding it returns rate_limited
along with a retry_after in seconds.
Agents loop. This limit exists so that an unintended one cannot spend a month's allowance in a couple of minutes.
Attribution
This service is not provided by the National Tax Agency. Data sources are credited in the footer of every page.