JP-Verify

xyz.obolpayv0.1.0Updated Oct 7, 2026

Verify Japanese companies: invoice T-numbers, Corporate Numbers, English names, shareholders

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Lets an assistant look up Japanese company registration data: invoice T-numbers, Corporate Numbers, English names and major shareholders.

What it does
A thin client for the JP-Verify API with four read-only tools. verify_japanese_company returns registration status and dates, Corporate Number, Japanese and English names and addresses; verify_japanese_companies_batch does the same for up to 100 to 1,000 numbers per call depending on plan. get_major_shareholders returns the major-shareholders table from a company's EDINET securities report, and find_japanese_company_by_name resolves a company name to candidate Corporate Numbers by exact matching. Each result includes the raw API answer plus metadata such as endpoint, HTTP status, quota headers and data sources.
When to use it
Useful when an assistant needs to check whether a Japanese company is registered for qualified invoices, confirm a Corporate Number, get a romanised or official English name, or pull major-shareholder data from EDINET filings. Suited to invoicing, vendor onboarding, KYC-style checks and research on Japanese entities.
Requirements
Local process; Python 3.10 or later, run via uvx or pip install. Network access to the JP-Verify API. An optional JP-Verify API key supplied as the JPVERIFY_API_KEY environment variable or an X-API-Key header; without a key the key-less sandbox applies, limited per IP address per day. Optional settings JPVERIFY_BASE_URL and JPVERIFY_TIMEOUT.
Before you install
Each answered call is a metered lookup on a paid JP-Verify plan, and paid plans are billed by JP-Verify, so usage can cost money. The optional JPVERIFY_API_KEY is a secret sent to JP-Verify; on a non-loopback address the server refuses to start while it is set unless --allow-shared-key is passed, since every caller without its own key would use it. Tool inputs (numbers, a name, a date) and the key are sent to JP-Verify. Data is register data as of the stated dates, not tax, legal, investment…

Installation

In SourceWeft

  1. Open JP-Verify in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

jp-verify-mcp

An MCP server for JP-Verify, the English-first API that verifies Japanese companies: qualified-invoice registration numbers (T-numbers), Corporate Numbers (法人番号), English names and major shareholders.

It is a thin client. Each tool call is one HTTPS request to JP-Verify's public API at https://jp-verify.obolpay.xyz. The package holds no register data and contacts no other site; it downloads nothing from the National Tax Agency or from EDINET.

Tools

ToolJP-Verify endpointReturns
verify_japanese_companyGET /v1/verifyRegistration status and dates, Corporate Number, Japanese name and address, English name and address (labelled official or machine-romanised)
verify_japanese_companies_batchPOST /v1/verifyThe same for many numbers: up to 100 per call on the sandbox and Starter keys, 500 on Growth, 1,000 on Reseller. Malformed numbers are listed under invalid and not charged
get_major_shareholdersGET /v1/shareholdersThe 「大株主の状況」 (major shareholders) table from a company's securities report on EDINET, or a no_public_disclosure statement. Optional as_of (YYYY-MM-DD)
find_japanese_company_by_nameGET /v1/resolveCandidate Corporate Numbers for a company name (rule-based exact matching, not fuzzy search)

All four are read-only. Each answered call (HTTP 200) is one metered lookup on your JP-Verify plan; the batch tool counts one per well-formed number. verify_japanese_company and get_major_shareholders reject a number that fails JP-Verify's own format or check-digit rule locally, without a call; the batch tool sends the list as given and JP-Verify lists such numbers under invalid, free of charge.

Every result has two parts:

  • jp_verify_response: JP-Verify's answer exactly as sent, including data_as_of, notes, disclaimers and the attribution strings;
  • metadata: the endpoint, the HTTP status, whether an API key or the key-less sandbox was used, the quota headers (limit, remaining, resets_at) and where the data comes from.

HTTP errors (400, 401, 404, 429, 503, 5xx) and network failures come back as tool errors with a one-line explanation. JP-Verify does not charge for 400, 401, 404, 429 or 503 answers.

Install and run

Requires Python 3.10 or later.

bash
uvx jp-verify-mcp                # or: pip install jp-verify-mcp && jp-verify-mcp

From a source checkout: pip install ., then jp-verify-mcp.

stdio (default)

For Claude Desktop, Claude Code (.mcp.json), Cursor and other clients that start a local server:

json
{  "mcpServers": {    "jp-verify": {      "command": "uvx",      "args": ["jp-verify-mcp"],      "env": { "JPVERIFY_API_KEY": "your key (optional)" }    }  }}

Leave out env to use the key-less sandbox.

Streamable HTTP

bash
jp-verify-mcp --transport streamable-http --host 127.0.0.1 --port 8000# endpoint: http://127.0.0.1:8000/mcp  (stateless, JSON responses)
  • A client may send its own key in an X-API-Key header. It is forwarded to JP-Verify for that call only and takes precedence over JPVERIFY_API_KEY.
  • A loopback bind gets DNS-rebinding protection automatically. For a public host name pass --allowed-host your.host.name (repeatable).
  • On a non-loopback address the server refuses to start while JPVERIFY_API_KEY is set, because every caller without its own key would use it. Pass --allow-shared-key if that is intended.
  • The sandbox allowance is per IP address, so key-less callers of a hosted endpoint share the host's allowance.

Configuration

VariableDefaultMeaning
JPVERIFY_API_KEYunsetYour JP-Verify API key, sent as X-API-Key. Unset: the key-less sandbox
JPVERIFY_BASE_URLhttps://jp-verify.obolpay.xyzAPI origin. Plain http:// is accepted only for localhost
JPVERIFY_TIMEOUT20Seconds per request (at most 120)

Other options: jp-verify-mcp --help.

Keys and plans

Data, sources and attribution

  • Registration status, Corporate Number and Japanese name and address come from data published by Japan's National Tax Agency (国税庁): 国税庁適格請求書発行事業者公表サイト (qualified invoice issuers) and 国税庁法人番号公表サイト (Corporate Numbers), mirrored and processed by JP-Verify. They are not produced or guaranteed by the National Tax Agency.
  • English names: official-en where the company filed an English name with the Corporate Number register; otherwise generated, a machine romanisation that is not authoritative. Most companies have not filed one.
  • Sole proprietors: number, status and dates only. No name or address is returned.
  • Major shareholders: the 「大株主の状況」 tables companies file on the FSA's EDINET, extracted by JP-Verify. Organisations are named; every other holder, including every individual, is reported without a name, normally as an aggregate (always on the sandbox). Only companies that file a 有価証券報告書 or 半期報告書 publish this table; for any other company JP-Verify returns no_public_disclosure, a statement of why nothing is published (not a claim that the company has no shareholders). Some filers may show not_yet_available while JP-Verify's ingest catches up. JP-Verify switches this route on separately (its /health reports major_shareholders.enabled); until then the tool answers route_not_enabled.
  • JP-Verify may add the FSA's EDINET code list (PDL1.0) and GLEIF LEI data (CC0 1.0) to a result.
  • When you republish data from a response, keep its attribution strings and *_register blocks (JP-Verify Terms, Article 5).
  • These are register facts as of the dates each response states. They are not tax, legal, investment or ownership advice. JP-Verify answers 503 rather than serve data older than its freshness window.

Privacy

The server sends JP-Verify only what a tool is asked about (numbers, a name, a date) and the API key, if any. It stores nothing, keeps no cache, never retries a call and adds no logging of its own; at the default log level (WARNING) request contents are not logged. JP-Verify's privacy statement: https://jp-verify.obolpay.xyz/v1/privacy. Terms: https://jp-verify.obolpay.xyz/terms.

Development

bash
python3 -m venv .venv && .venv/bin/pip install -e '.[test]'.venv/bin/python -m pytest

The tests never reach JP-Verify: HTTP is mocked, or answered by a stand-in on 127.0.0.1.

Company and contact

Yanagi the First Co., Ltd. (株式会社ヤナギtheファースト) · [email protected] · https://jp-verify.obolpay.xyz

License

MIT, for this client. Use of the JP-Verify service is governed by its Terms of Service.

Registry

Official MCP Registry name: xyz.obolpay/jp-verify. Source: https://github.com/Hiroshi-Ichiyanagi/jp-verify-mcp

Source: README.md at commit 7f0f46f

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.1.0LatestOct 7, 2026