# jp-edinet

> What has this Japanese company filed on EDINET in the last 365 days, and how are its filings related? Also large shareholding and tender offer filings naming an issuer. Hosted MCP and HTTP: no install and no EDINET API key, works from cloud agents. From our day-by-day index of the FSA EDINET document list: English document-type labels (our translation), Japanese names as filed, and a source and coverage receipt on every answer. Free. Facts only: not investment advice; no holding ratios or document contents.

Data source: EDINET, Financial Services Agency of Japan (FSA), document list API v2 (https://api.edinet-fsa.go.jp/api/v2/documents.json), https://disclosure2.edinet-fsa.go.jp/ . Reused under the Public Data License 1.0 as stated in the EDINET terms of use (https://disclosure2dl.edinet-fsa.go.jp/guide/static/disclosure/WZEK0030.html). Processed by MK Career Planning (English labels as our translation, day-by-day indexing, extraction of relations stated in the document list); not an official service of the FSA or the Government of Japan.
Facts only. This service relays filing metadata from the EDINET document list of the Financial Services Agency of Japan (FSA): document IDs, document types, submission times, filer and issuer codes, and the relations EDINET states. It is not investment advice, it does not evaluate any company, security or filing, and it says nothing about the intentions of any filer or holder. English labels are our translation. Withdrawn documents are shown as withdrawn without their content. Check the official EDINET record before relying on it.
EDINET's API returns the document list one file date at a time. This service indexes the last 365 days day by day (backfilled gradually at no more than one request per minute) and re-fetches recent days to pick up withdrawals, FSA corrections and non-disclosure. coverage in every answer states the indexed range and missing days.
Relations are only those stated in EDINET fields (parentDocID, issuerEdinetCode, subjectEdinetCode, subsidiaryEdinetCode), one hop at a time. Targets not in the index are unresolved with reason candidates: outside_indexed_range, excluded_from_initial_data, not_yet_ingested.
Withdrawn filings are returned as withdrawn without content. Filer names that appear to belong to individuals are withheld (individual (name withheld)).

## Connect

- MCP (streamable HTTP): https://jp-edinet-production.mk-career-planning.workers.dev/mcp
- OpenAPI: https://jp-edinet-production.mk-career-planning.workers.dev/openapi.json
- x402 discovery: https://jp-edinet-production.mk-career-planning.workers.dev/.well-known/x402

## Quickstart

- Developer quickstart (MCP client configs, free curl/TypeScript calls, how to read coverage, withdrawals, unresolved relations and withheld names): https://jp-edinet-production.mk-career-planning.workers.dev/quickstart

## Free tools

- catalog: List the tools of this server with prices, data sources, licensing, daily limits and data freshness.
- edinet_company_filings: What has this Japanese company or other filer submitted to EDINET in the last 365 days? From this service's day-by-day index of the EDINET document list: document ID, document type (EDINET code and English label, our translation), submission time, period, filer, issuer, tender offer subject and subsidiary codes, parent document, withdrawal, disclosure and correction status, and the EDINET link. Withdrawn filings carry no content. Facts only.
- edinet_filing_relations: How is this EDINET filing related to other filings, as EDINET's document list states explicitly? One hop each: parent document (parentDocID: amendment, change report base, withdrawal), child documents, filer, large shareholding issuer, tender offer subject and listed subsidiaries, plus FSA correction and non-disclosure records. Each relation names its basis field. Targets not in the index are returned as unresolved with reason candidates, never guessed.
- edinet_holdings_tender_offers: Which large shareholding and tender offer filings name this Japanese issuer? Large shareholding reports, change reports and amendments (EDINET issuerEdinetCode) and tender offer filings (subjectEdinetCode), newest first, from this service's EDINET index. Filer names are given only for organisations; names that appear to be individuals are withheld. A list of filings ordered by time only: no holding ratios and no interpretation of anyone's intentions.
- get_receipt: Re-fetch the stored result of a settled paid call by its receipt_id, for when the response was lost after payment. Free. Unknown or unsettled receipt ids return RECEIPT_NOT_FOUND. Results are kept for 90 days after settlement.
- HTTP: GET https://jp-edinet-production.mk-career-planning.workers.dev/v1/edinet/filings, GET https://jp-edinet-production.mk-career-planning.workers.dev/v1/edinet/relations, GET https://jp-edinet-production.mk-career-planning.workers.dev/v1/edinet/holdings-tender-offers return the same data as the MCP tools. GET https://jp-edinet-production.mk-career-planning.workers.dev/v1/receipts/<receipt_id> is get_receipt.

## Payments

This server offers free tools only. It does not request or accept x402 payments.

## Rate limits

- Free calls (free HTTP endpoints under /v1/ and free MCP tools) are limited to 300 requests per 60 seconds per client (a client is keyed by a one-way hash of its IP address and the first 64 characters of its User-Agent; neither is stored. The User-Agent can be set by anyone, so this split is for fairness between clients behind a shared gateway, not a security control). Over the limit, HTTP returns 429 RATE_LIMITED with a Retry-After header and MCP tools return the error RATE_LIMITED. Paid calls are not rate limited.

## Provenance and fetch_status

Responses carry provenance[] (source, upstream_updated_at, retrieved_at, content_sha256, parser_version, fetch_status). fetch_status values:

- found: The upstream document was retrieved and contains the data used for this answer.
- empty: The upstream was retrieved, but it has no item for this query (for example JMA had no bulletin for that area in its feeds, or the municipality is not in the list). The state is unknown: empty does NOT mean 'none in effect'.
- stale: The data was retrieved but is older than the freshness threshold for its kind; treat it with care.
- unavailable: The upstream could not be retrieved, read or used (network error, withdrawn bulletin, paused source, or data not yet loaded).
- unsupported: The query is outside what this source covers (for example a date JMA does not issue warnings for yet, or a period before the source's records).

## Errors

- RECEIPT_NOT_FOUND (get_receipt)
- RATE_LIMITED (free calls over the per-client limit; HTTP 429 with Retry-After; not charged)

## Terms

- Fresh: a successful EDINET fetch within stale_after_hours (30 by default). Otherwise answers are unknown.
- Keep the attribution (source EDINET / FSA and 'processed by MK Career Planning') when you pass results on.

## Privacy and support

- Operator: MK Career Planning
- Terms of Service: https://jp-edinet-production.mk-career-planning.workers.dev/terms
- Privacy policy: https://jp-edinet-production.mk-career-planning.workers.dev/privacy
- Support (free): https://jp-edinet-production.mk-career-planning.workers.dev/support (mk.career.planning@gmail.com)
