@pipeworx/edinet
Connect: https://gateway.pipeworx.io/edinet/mcp · Install: one-click buttons
Tools: 3
Status: PUBLIC, shipped BYOK 2026-09-16 (fleet #1942/#1928). The keyless
company lookup works for every caller with no credential; the two filing-list
tools take the CALLER’s own EDINET Subscription-Key as _apiKey. See “Auth”
below for why it shipped that way rather than on a platform key.
EDINET is Japan’s EDGAR: securities reports (有価証券報告書), quarterly and half-year reports, extraordinary reports, large-shareholding reports (大量保有報告書), tender offers, and the XBRL/PDF/CSV documents behind them.
Tools
| Tool | Key? | What it does |
|---|---|---|
edinet_search_filers | no | Resolve a Japanese company → EDINET code + securities code, from the FSA’s official EDINET code list (~11,400 filers). Searches Japanese name, English name, kana, EDINET code and ticker. |
edinet_list_filings | yes | Every document filed on one day, optionally filtered to a filer / document type / XBRL-only. |
edinet_company_filings | yes | One filer’s filings over a range of ≤31 days, newest first. |
The two access rules
- The code list is keyless.
https://disclosure2dl.edinet-fsa.go.jp/searchdocument/codelist/Edinetcode.zipis served by the FSA with no credential — a ~570 KB ZIP holding one Shift_JIS CSV. The pack unzips it (DecompressionStream('deflate-raw')) and decodes it (TextDecoder('shift_jis')); both are supported in workerd, verified 2026-09-13 on a localwrangler dev, which is worth knowing because no other pack in this repo decodes a legacy Japanese encoding. - The API v2 needs a free Subscription-Key, passed by the caller as
_apiKey. Sent upstream as theSubscription-Keyquery parameter.
Auth
BYO key. edinet_search_filers needs none. edinet_list_filings and
edinet_company_filings require an EDINET API v2 Subscription-Key, which the
caller supplies as _apiKey; without one they refuse with the words “requires
an API key”, so the gateway books the refusal as a gate rather than as a defect
of ours.
Pipeworx holds no platform key for EDINET, and that is a decision, not an oversight (fleet #1942, 2026-09-16). Bruce registered an EDINET account — the account exists — but the FSA’s own key-issuance page rendered blank on their side, so the account could not yield a key. Rather than hold a finished pack behind a third party’s outage, the pack shipped BYOK.
Anyone re-checking this: the thing to look at is the key page behind a
logged-in EDINET account, not the pre-auth URL — …/api/auth/index.aspx?mode=1
302s to Azure B2C and answers normally whether or not the page behind the login
works, so probing it unauthenticated tells you nothing either way.
If a key is obtained, platformKeyEnv: 'PLATFORM_EDINET_KEY' goes in the
manifest in the same change that lands wrangler secret put — declaring it
early un-sinks routing and points Japanese-filings questions at tools that can
only refuse (the fda-inspections precedent, #617).
Traps
- There is no company-search endpoint. The API lists filings BY DATE and
nothing else (
documents.json?date=YYYY-MM-DD&type=2). “Toyota’s filings” is therefore a walk of the daily lists — one upstream request per day, which is whyedinet_company_filingscaps its range at 31 days. Resolve the company first with the keylessedinet_search_filers. - The securities code has five digits. Toyota is
72030in EDINET and7203on the exchange. Both tools accept either and return both (sec_code/ticker). - Shift_JIS, not UTF-8. Decoding the code list as UTF-8 yields mojibake for every Japanese name, silently — the ASCII columns still parse.
- Individual filers. ~3,200 of the ~11,400 rows are natural persons
(大量保有報告書 filers,
提出者種別starting 個人). Their所在地is a home address, so the pack dropslocationfor those rows and keeps it for organisations. - Annual reports cluster. Most listed Japanese companies close 31 March and file in late June; an empty two-week window is usually the calendar, not a bug.
Why there is no platform key (history)
EDINET API v2 registration is not 法人番号-gated (that was the worry carried over from NTA houjin-bangou — see fleet #1928). It is an Azure AD B2C self-service signup whose form asks for exactly four things:
email · emailed verification code · password · CAPTCHA
Field IDs read live off the signup page, 2026-09-13:
email, emailVerificationCode, newPassword, reenterPassword,
captchaEntered / challengeString / captchaControlChallengeCode
(“ボットを倒すお手伝いをします”). No organisation, no corporate number, no
Japanese address — a US individual can register.
The CAPTCHA made registration a human step, so it went to Bruce. He did it — and then EDINET’s key-issuance page came back blank (2026-09-16). The pack was promoted BYOK at that point rather than waiting on a vendor website.
What is still outstanding, for whoever picks this up when the page recovers:
wrangler secret put PLATFORM_EDINET_KEYon the gateway.- Add
platformKeyEnv: 'PLATFORM_EDINET_KEY'to theedinetentry inworkers/gateway/src/pack-manifest.json, in that same change. - Replace the two keyed
tool-examples.jsonentries with calls that actually returned rows. As shipped,edinet:edinet_list_filingsandedinet:edinet_company_filingscarry argument shapes taken from the FSA’s own spec (ESE140206, EDINET API仕様書 Version 2) and from a real EDINET code we resolved live (E02144= Toyota) — but the calls themselves have never completed, because we have never held a key. Treat those two examples as unverified until someone runs them.
Verified live (keyless half only)
2026-09-13, re-run 2026-09-16 against the promoted pack:
edinet_search_filers({query:"Toyota", limit:3}) → 6 matches of 11,389 filers
E02144 7203 トヨタ自動車株式会社 / TOYOTA MOTOR CORPORATION
E02505 8015 豊田通商株式会社 / TOYOTA TSUSHO CORPORATION
E00540 3116 トヨタ紡織株式会社 / TOYOTA BOSHOKU CORPORATION
edinet_search_filers({query:"トヨタ自動車"}) → 1 match (E02144)
edinet_search_filers({query:"7203"}) → 1 match (E02144)
edinet_search_filers({query:"E02144"}) → 1 match (E02144)
edinet_search_filers({query:"Mitsubishi UFJ", listed_only:true})
→ E03606 / 8306
edinet_list_filings and edinet_company_filings refuse without a key, with the
words “requires an API key” so the gateway books the refusal as a gate rather
than an error.
Tools
- edinet_search_filers — Resolve a Japanese company to its EDINET code and securities code from the FSA’s official EDINET filer list — the lookup every other EDINET call needs. Searches Japanese name, English name, kana, EDIN
- edinet_list_filings — Every disclosure document filed with EDINET on one day — annual and quarterly securities reports, extraordinary reports, large-shareholding reports, tender offers — with filer, document type, period a
- edinet_company_filings — All EDINET filings by one Japanese company over a date range of up to 31 days, newest first. EDINET has no company-search endpoint, so this walks the daily filing lists and keeps that filer’s rows. Id
Tools
edinet_company_filings— All EDINET filings by one Japanese company over a date range of up to 31 days, newest first. EDINET has no company-search endpoint, so this walks the daily filing lists and keeps that filer's rows. Idedinet_list_filings— Every disclosure document filed with EDINET on one day — annual and quarterly securities reports, extraordinary reports, large-shareholding reports, tender offers — with filer, document type, period aedinet_search_filers— Resolve a Japanese company to its EDINET code and securities code from the FSA's official EDINET filer list — the lookup every other EDINET call needs. Searches Japanese name, English name, kana, EDIN