Daichodo

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

ToolWhat it doesPlan
verify_invoice_registrationLook up a registration numberall
check_invoice_registration_on_dateWas it valid on a given dateStandard
lookup_companyLook up a corporate numberall
validate_numbersCheck up to 100 numbers' format at onceall
get_account_statusPlan and remaining allowanceall

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_numbers 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_numbers answers the first; verify_invoice_registration answers the second.

Sole traders

The NTA does not publish names for sole traders (個人事業者), who are roughly half the register.

Those records return name_withheld: true 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.