Install
openclaw skills install @japanverify/jp-company-verifyVerify Japanese companies against official registries with JPVerify: identify a Japanese company from an English or romanized name, postal code, T-number, LEI or securities code with English output; corporate number (法人番号) lookup by number or company name, active/closed status, registered address, a company pre-check report with risk flags, company profile (capital, employees, website), listing, EDINET filings, Financial Services Agency licences and former names. Use when a task involves confirming that a Japanese company exists, finding its corporate number, or doing a pre-check before onboarding or paying a Japanese counterparty. Paid per call (API key credits or x402).
openclaw skills install @japanverify/jp-company-verifyVersion 1.3.0 · JPVerify · https://www.jpverify.com
If the starting point is a T-number on an invoice, use jp-invoice-number-check instead.
JPVerify is a paid, per-call API. Pick the first option that applies; never guess credentials.
JPVERIFY_API_KEY (a jpv_live_… key the user created), send it on every call:
Authorization: Bearer $JPVERIFY_API_KEY (or X-API-Key).jpverify MCP server is already configured and uses the key saved in the plugin's settings (/plugin → JPVerify → Configure), not JPVERIFY_API_KEY. Otherwise: claude mcp add --transport http jpverify https://api.jpverify.com/mcp --header "Authorization: Bearer $JPVERIFY_API_KEY" --header "X-JPVerify-Client: jp-company-verify/1.3.0"
Each successful call is deducted from the user's prepaid USD credits; failed or invalid calls are refunded automatically. Before a large batch, check the balance for free: GET https://api.jpverify.com/v1/account/balance with the same header, or the MCP tool jpverify_balance.eip155:8453) and the user approved a budget, call without a key: the API answers HTTP 402 with the exact price; sign and retry with PAYMENT-SIGNATURE. Pay only within the approved budget.jpverify_guide (claude mcp add --transport http jpverify https://api.jpverify.com/mcp); use it to confirm which call fits, then tell the user they can create a free account with starter credit at https://www.jpverify.com/signup?ref=jp-company-verify and set JPVERIFY_API_KEY.Always send X-JPVerify-Client: jp-company-verify/1.3.0 on HTTP calls. Never print, log or share the API key.
トヨタ自動車株式会社).POST /v1/jp/companies/resolve (MCP jp_company_resolve, $0.25) with what you hold: name (legal, English or brand name such as "Uniqlo") plus address (English or Japanese), postal_code or prefecture; a website or company email (only the domain is used); or t_number, corporate_number, lei, securities_code. Identifiers return matched; a name alone returns candidates (show them to the user). likely_match needs a strong name match corroborated by the postal code, municipality, website domain or prefecture; it is still not an identifier match. Then use corporate_number for the other calls below.POST /v1/jp/companies/verify (MCP jp_company_verify).POST /v1/jp/companies/report (includes the verification; do not call both).POST /v1/jp/companies/verify-batch ($0.008 per company). Tell the user the total first.GET /v1/jp/filings (needs a corporate number, EDINET code or securities code).POST /v1/jp/regulated-entities/verify.| Endpoint | MCP tool | Price (USD) | Use when | Returns |
|---|---|---|---|---|
POST /v1/jp/companies/resolve | jp_company_resolve | $0.25 | You hold an English, brand or romanized Japanese company name, an English address or postal code, a website or e-mail domain, a T-number, corporate number, LEI or securities code and need the Japanese legal entity, in English. | Decision (matched / likely_match / candidates), legally binding Japanese name, kana, English name with source, contract party name, status and qualified-invoice registration. Brand names (au, MOS Burger) find the owner as candidates; listing, Wikidata prominence and gBizINFO employee counts only order candidates. |
POST /v1/jp/companies/verify | jp_company_verify | $0.01 | You need a Japanese company or corporate-number lookup. | Corporate number, registered Japanese legal name (legal_name_ja) and address, English name (NTA official, EDINET, or romanized reading) and English address (official or Japan Post romanization) with their sources, active or closed status, and match evidence. |
POST /v1/jp/companies/report | — | $0.10 | You need a Japan company registry pre-check with risk flags. | Registry identity, status, evidence and risk flags, plus a profile (capital, employees, founding date, website, representative), listing and latest EDINET filing, FSA licences and former names, each with its source; the profile falls back to a dated gBizINFO snapshot when the live source is unavailable. Not full KYC/KYB. |
POST /v1/jp/companies/verify-batch | — | $0.008 per item | You need up to 100 Japanese company or corporate-number lookups in one request ($0.008 each). | One result per input with match status and registry evidence. |
GET /v1/jp/filings | — | $0.01 | You need EDINET filing metadata for a Japanese company by corporate number, EDINET code, or security code. | Filing metadata, correction/withdrawal relationships, freshness, and official evidence references; raw files remain internal. |
POST /v1/jp/regulated-entities/verify | — | $0.03 | You need to verify an entity against the covered Japanese FSA financial instruments, funds transfer, or crypto-asset exchange datasets. | Coverage-aware licensing decision, freshness, identity match, license evidence, and review warnings; not a legal unlicensed determination. |
| Endpoint | Required fields | Optional fields |
|---|---|---|
POST /v1/jp/companies/resolve | — | name, address, postal_code, prefecture, corporate_number, t_number, lei, securities_code, duns, max_candidates, website, email |
POST /v1/jp/companies/verify | — | name, corporate_number, address, response_language |
POST /v1/jp/companies/report | — | name, corporate_number, address, response_language |
POST /v1/jp/companies/verify-batch | items | response_language |
GET /v1/jp/filings | — | corporate_number, edinet_code, security_code, date_from, date_to, doc_type_code, form_code, include_withdrawn, limit, cursor, response_language |
POST /v1/jp/regulated-entities/verify | — | corporate_number, name, address, phone, categories, response_language |
Where no field is required, send at least one identifier. JPVerify does not read files: send the fields you read. response_language is ja, en or both (default both).
Japanese descriptions and request examples for every endpoint: references/endpoints.md, references/examples.md.
/v1/jp/companies/resolve: decision is matched (identifier), likely_match, candidates, identifier_conflict, not_found or source_unavailable. legal_name_ja is the legally binding name — use it (or contract_party_name) in contracts; name_en.source says whether the English name is official (nta_official_en, edinet_en) or a transliteration. A T-number of an individual returns only its registration status./v1/jp/companies/verify and /v1/jp/companies/report: an English or romanized name that is not found returns not_found with risk flag english_name_not_in_registry_index and a next_step — the company may still exist; resolve the name with /v1/jp/companies/resolve instead (the miss is billed, so start there when you only have an English name). status is active, closed, not_found or multiple_matches; verified is true only for a single confident match. match_type, match_score and address_match show how the match was made. risk_flags (report) lists items to confirm. The report also returns profile (capital, employees, founding date, website, business summary and representative in Japanese — from gBizINFO; the website may come from Wikidata; when the live gBizINFO source is unavailable the profile comes from a dated gBizINFO snapshot with retrieval: bulk_snapshot and no representative name), listing (securities and EDINET codes, latest filing), regulated (FSA licences found by corporate number) and former_names (from the NTA change log since coverage_since). Each section names its source; empty or source_unavailable means no data, not a negative finding./v1/jp/regulated-entities/verify: decision is verified, no_record_within_coverage, manual_review, out_of_scope or stale_source; coverage_status tells whether the requested licence category is covered. "No record within coverage" is not proof that a licence is required or missing./v1/jp/filings: an empty list means no EDINET filings matched the identifier — many private companies file nothing there.signals: listed_company, wikidata_sitelinks, company_size). They never turn a name into likely_match on their own. A brand name (au, MOS Burger) finds the company that owns the brand (matched_alias_source: wikidata_brand) as a candidate only — confirm it with the user. A Japan Post business-specific postal code (e.g. 530-8323 for Daikin Industries' head office) counts as postal evidence when the office name matches the candidate ({"signal": "postal_code", "result": "match", "via": "business_postal_code"}). Website and e-mail domains are compared with Wikidata and gBizINFO websites; a domain shared by several companies is ignored.name_en_source: official, edinet, gleif, wikidata, furigana_transliteration). English addresses are official or Japan Post's romanization (address_en_source: official, japan_post_romaji); localized.address.completeness is complete, partial (a building name, unparsed part or town could not be romanized) or unavailable. With response_language=en a partial English address does not replace address, which keeps the full Japanese original — use that for mail or records. The entity lookup reports the same as address.en_completeness. Nothing is machine-translated. For contracts and legal documents use legal_name_ja, the Japanese registered name, which is returned in every response_language.| Response | What to do |
|---|---|
200 | Use the result (see "Reading results"). With an API key, X-JPVerify-Credits-Charged and X-JPVerify-Credits-Remaining show the cost and balance. |
401 invalid_api_key | The key is missing, wrong or revoked. Ask the user to check JPVERIFY_API_KEY; do not retry with guesses. |
402 insufficient_credits (API key) | Stop. Nothing was charged. Tell the user to top up at https://www.jpverify.com/account/billing. Do not retry. |
402 with x402 payment requirements (no key) | Pay only within the approved budget, using the exact amount in the response. |
422 | Invalid input; nothing was charged. Fix the input (the error says which field) and call again once. |
5xx / timeout | Not charged (credits are refunded). Retry once later; then report the failure. |
Spending rules:
POST /v1/jp/companies/resolve)API key:
curl -X POST https://api.jpverify.com/v1/jp/companies/resolve \
-H "Authorization: Bearer $JPVERIFY_API_KEY" \
-H "X-JPVerify-Client: jp-company-verify/1.3.0" \
-H "Content-Type: application/json" \
-d '{"name": "Murata Manufacturing Co., Ltd.", "prefecture": "Kyoto"}'
import os, requests
response = requests.post(
"https://api.jpverify.com/v1/jp/companies/resolve",
headers={"Authorization": f"Bearer {os.environ['JPVERIFY_API_KEY']}",
"X-JPVerify-Client": "jp-company-verify/1.3.0"},
json={"name": "Murata Manufacturing Co., Ltd.", "prefecture": "Kyoto"},
timeout=60,
)
print(response.status_code, response.json())
x402 (no account):
# No key: shows the HTTP 402 x402 price; pay with an x402 client and retry with PAYMENT-SIGNATURE.
curl -i -X POST https://api.jpverify.com/v1/jp/companies/resolve \
-H "X-JPVerify-Client: jp-company-verify/1.3.0" \
-H "Content-Type: application/json" \
-d '{"name": "Murata Manufacturing Co., Ltd.", "prefecture": "Kyoto"}'
Full SDK examples (Python x402, JavaScript @x402/fetch): https://api.jpverify.com/docs/x402
manual_review_required is true or a status is ambiguous, show the evidence to the user and let them decide; do not decide on their behalf.