Japan Finsight

Tools

20 MCP tools available to subscribers. Most answer a question about one company. One, run_sql, queries the whole record at once: every company, every filing type, every year, in a single query. That is where the screens and market-wide questions live that no per-company tool can answer.

Each tool returns structured JSON. Every answer is drawn from disclosure filings on record; where a response carries a filing identifier, it resolves to the exact source document. Ticker-keyed tools include a company block (ticker, EDINET code, Japanese and English names, sector) so your agent never has to infer a company's identity from a ticker number.

Limits

SQL queries time out after 10 seconds and return at most 200 rows unless you set a lower LIMIT. Each API key may make 120 requests per minute. Responses that would exceed the size cap shrink and set "truncated": true.

A worked example

What is Elliott pushing for at Nippon Express?

get_holding_actions("9147")
{
  "success": true,
  "ticker": "9147",
  "company": {
    "ticker_4": "9147",
    "ticker_t": "9147.T",
    "edinet_code": "E36706",
    "name_jp": "NIPPON EXPRESSホールディングス株式会社",
    "name_en": "NIPPON EXPRESS HOLDINGS, INC.",
    "sector": "Land Transportation"
  },
  "truncated": false,
  "filings": [
    {
      "date": "2026-05-20",
      "filer": "エリオット・インベストメント・マネージメント・エルピー(Elliott Investment Management L.P.)",
      "pct": 6.05,
      "purpose": "Consideration of a new M&A strategy and profit improvement plan; Real estate spin-off; Partial sale (including potential sale and leaseback transactions) and/or other methods to monetize real estate a",
      "filer_name_en": null,
      "filer_sector": "Others",
      "is_joint_filing": false,
      "joint_holder_count": 1,
      "change_proposals": [
        "Consideration of a new M&A strategy and profit improvement plan",
        "Real estate spin-off",
        "Partial sale (including potential sale and leaseback transactions) and/or other methods to monetize real estate and unlock its intrinsic value",
        "Capital allocation to a large-scale share buyback program"
      ]
    }
  ]
}
# (single filing in the past 12mo window — nothing else was cut)

The response names the filer, the stake, and the filing date. The filing behind it is EDINET document S100Y53L, on the public record. Every answer traces back to a specific filing.

Company & financials

get_capital_policy

The company's stated capital-return policy from its latest annual report.

When to use: Target dividend payout ratio and any stated reason for skipping a dividend, extracted from the annual report's capital-policy text with the source passage preserved.

get_capital_policy(ticker: str) -> str

get_cashflows

Get multi-year cash flow history (up to 7 years).

When to use: When you need cash-generation direction over time — dividend coverage, cash conversion, investment intensity. Up to 7 years of OCF/ICF/FCF. For income-statement lines and the balance sheet use get_financials.

get_cashflows(ticker: str) -> str

get_filing_text

Read narrative text_blocks sections from a company's latest annual report.

When to use: Read a narrative section (business risks, governance, dividend policy, audit, MD&A, etc.) from a Japanese company's latest annual securities report. Call with section=None to list the available section keys, then again with a specific key to get that section's text.

get_filing_text(ticker: str, section: Optional[str] = None) -> str

get_financials

Multi-year financial history plus latest balance sheet for a Japanese company.

When to use: Multi-year income-statement series plus the latest balance-sheet snapshot for a ticker. The `latest` block carries total assets, net assets, liabilities, BPS, R&D, capex, depreciation, EBITDA. For cash-flow lines (OCF/ICF/FCF) use get_cashflows.

get_financials(ticker: str) -> str

get_quality_trends

Get up to 7 years of quality and capital allocation trends for a Japanese company.

When to use: Multi-year quality trend for a ticker: ROE, operating/investing/free cash flow, EPS, dividends per share, equity ratio, and payout ratio by fiscal year. Use when judging durability of returns and capital allocation.

get_quality_trends(ticker: str) -> str

get_related_party_transactions

Related-party transactions disclosed in a company's annual reports.

When to use: Related-party transactions for a ticker: counterparties, transaction types, and amounts, extracted from the annual report's related-party notes with verbatim figures preserved.

get_related_party_transactions(ticker: str) -> str

get_segments

Get operating-segments matrix for a Japanese company from its annual report.

When to use: Get the operating-segments matrix (revenues, operating profit, segment assets) for a Japanese-listed company from its latest annual securities report. Period='latest' returns the most recent fiscal year. Empty segments with segments_text_only=True means the filer reports segments only in narrative text (common for US-GAAP filers and some IFRS filers); use get_filing_text for those.

get_segments(ticker: str, period: str = 'latest') -> str

Ownership & stakes

get_cross_holdings

Get cross-shareholding relationships for a company.

When to use: When mapping who holds this company and what it holds back — reciprocal cross-shareholding pairs from both 5%+ filings and annual registers. For a plain holder list use get_large_holders or get_shareholder_register.

get_cross_holdings(ticker: str) -> str

get_holding_actions

Recent 5%+ filings (past 12 months) where the holder states change proposals or a desired outcome, or is a known activist filer.

When to use: Filings where a 5%+ holder states what it wants changed, plus all filings by known activist funds. The stated proposals and desired outcome come from the filing text itself. For the full current 5%+ holder list use get_large_holders.

get_holding_actions(ticker: str) -> str

get_large_holder_timeline

Chronological 5%+ ownership-change events for a company, from large shareholding filings (Doc 350).

When to use: Chronological 5%+ stake-change events for a ticker: entries, increases, decreases, and exits from large shareholding filings. Use it to follow a position from first filing to exit. For the current snapshot use get_large_holders.

get_large_holder_timeline(ticker: str, window_months: int = 36) -> str

get_large_holders

Current 5%+ holders from large shareholding filings (Doc 350), with change tracking.

When to use: Current 5%+ holders from large shareholding filings (Doc 350), with NEW/INCREASED/REDUCED change flags. Not the annual top-10 register — for that use get_shareholder_register. For a stake's history use get_large_holder_timeline; for what a holder says it wants, get_holding_actions.

get_large_holders(ticker: str) -> str

get_ownership

Get ownership breakdown for a Japanese company.

When to use: Aggregate ownership breakdown (foreign / float / institutional / corporate / individual) for a ticker. For named holders use get_shareholder_register (annual register) or get_large_holders (5%+ filings).

get_ownership(ticker: str) -> str

get_shareholder_register

Annual top-10 shareholder register from securities reports, holder identity normalized.

When to use: The annual top-10 shareholder register for a company: normalized holders per fiscal year, with year-over-year entries and exits on request. Answers who joined and who left the register. For stakes disclosed through 5%+ filings use get_large_holders. Serves up to 10 reporting periods per company, with coverage back to about fiscal 2018.

get_shareholder_register(ticker: str, periods: int = 3, include_changes: bool = False) -> str

Events & signals

get_buybacks

Get recent treasury stock buyback filings (past 12 months).

When to use: Treasury-stock buyback filings from the past 12 months (Doc 220) for a ticker — active and recent programs, not a full history. For tender-offer buybacks use get_tender_offer_history.

get_buybacks(ticker: str) -> str

get_material_events

Get recent extraordinary reports / material events (past 12 months).

When to use: When you need what a company disclosed as a material event in the past 12 months — management changes, M&A, restructuring — each Doc 180 filing tagged with event category and the FSA ordinance item it cites.

get_material_events(ticker: str) -> str

get_tender_offer_history

Chronological tender-offer history for a company: registrations, withdrawals, results, target opinions, Q&A responses, exemptions.

When to use: When a takeover, MBO, or tender buyback is in play — the full chronological tender-offer record for a ticker, each event tagged by type (registration, withdrawal, result, target opinion, Q&A, exemption). For open-market buybacks use get_buybacks.

get_tender_offer_history(ticker: str) -> str

Filing index & query

find_companies

Look up a Japanese company by name (English or Japanese) or ticker code.

When to use: Fuzzy company name → ticker lookup when you don't know the ticker.

find_companies(search_term: str) -> str

get_briefing

The guide to this record — call once at session start, before your first query.

When to use: Call once at session start, before your first query. Teaches the record: coverage windows, entity model, grain rules, and the honesty protocol for reading Japanese disclosure data.

get_briefing() -> str

get_filings

List the EDINET filings a company itself submitted, newest first.

When to use: Chronological index of every EDINET filing the company itself submitted: dates, document types, amendment links. The entry point for 'what has this company filed?'. For third-party 5%+ filings about the company, use get_large_holders or get_large_holder_timeline.

get_filings(ticker: str, window_months: int = 24, doc_type: str = None) -> str

run_sql

Run read-only SQL across the full disclosure record: every company, every filing type, every year, in one query.

When to use: Cross-company screens, market-wide joins, and any question the typed tools don't cover. The typed tools answer one company; run_sql answers the whole market. Read-only, restricted to the public disclosure tables.

run_sql(sql: str) -> str

Two things worth knowing

Filing year vs fiscal year. A securities report filed in June 2025 covers the fiscal year ended March 2025. Filters on filing dates and fiscal-year-end dates answer different questions.

Ticker formats. Tools take the 4-digit code (7203). In SQL, securities_reports.ticker carries a .T suffix (7203.T) and registry tables carry the 5-digit securities code (72030) — the canonical_company_ids view resolves any format.