koreanpulse/Track Korean DART filings with an AI assistant

How to track Korean DART filings with an AI assistant

If you research Korean equities, the filing you most want to see first is almost always in DART — and almost always in Korean. This guide explains what DART is, which filings carry signal, and how to wire it into an AI assistant (ChatGPT, Claude, or Cursor) so you can ask “what did Samsung Electronics file this week?” in plain English and get a real answer.

What DART is

DART (전자공시시스템, “Data Analysis, Retrieval and Transfer System”) is South Korea's electronic corporate disclosure system, run by the Financial Supervisory Service. Every company listed on KOSPI, KOSDAQ, or KONEX files here. It is the canonical, real-time, free primary source — the Korean equivalent of the SEC's EDGAR.

DART also publishes an OpenAPI (free key, 40,000 calls/day). The catch for non-Korean readers: the DART site, the filing titles, and the API field values are all in Korean. There is no official English mode. An investor who reads Korean works from the primary source; everyone else works from a translation that is, by the on-record admission of KRX itself, ASIFMA, Wellington, Aberdeen, and Matthews Asia, structurally late or absent.

Which DART filings actually carry signal

DART is high-volume — hundreds of filings a day. Four categories do most of the work:

  • 5%-rule disclosures (주식등의대량보유상황보고서) — filed when an investor crosses 5% ownership of a listed company, or shifts an existing holding by 1% or more. This is the single most-watched filing type: it is the leading indicator of foreign capital entering a name and of activist accumulation.
  • Major business events (주요사항보고서) — M&A, spin-offs, capital raises, convertible-bond issuance, large supply contracts.
  • Periodic reports (정기공시) — annual, half-year, and quarterly reports.
  • Issuance & insider filings — new share issuance, treasury-stock decisions, and executive/major-shareholder trading reports.

DART tags each filing with a one-letter type code (A = periodic, B = major event, C = issuance, D = shareholding, F = audit, and so on), which is useful for filtering once you are calling the API programmatically.

Why an AI assistant can't do this out of the box

It is reasonable to expect ChatGPT or Claude to just answer “any new filings on SK hynix?” They cannot, for two structural reasons:

  • Filings are not in the model's training data. A language model's knowledge is frozen at its training cutoff and was never a real-time feed of individual DART receipts. Today's 5%-rule filing did not exist when the model was trained.
  • Web search rarely surfaces a specific filing. General web search finds news about a filing, hours later and often without the underlying receipt number, filer name, or exact stake. It does not reliably reach the DART primary source.

The fix is to give the assistant a tool it can call. That is what the Model Context Protocol (MCP) is for: an MCP server wraps an external data source (here, the DART OpenAPI) and exposes it as typed functions the assistant invokes on demand. When you ask about a Korean filing, the assistant calls the tool, the tool queries DART, and the result comes back into the chat — translated, if the server does translation.

Three ways to track DART filings from an AI assistant

  1. 1. Build your own MCP server over the DART OpenAPI. Register a free key at opendart.fss.or.kr, wrap the list and document endpoints in an MCP server (the MCP SDK has Python and TypeScript libraries), and add a translation step. Full control; it is real work, and you maintain the Korean company-name index and quota handling yourself.
  2. 2. Use an existing Korean-data MCP server. Several open-source MCP servers wrap DART. Most are stdio-only (you run them locally with your own key) and return filings in Korean. Good if you read Korean and want raw data.
  3. 3. Connect a hosted Korean stock market MCP server. A hosted endpoint means no local install and no key wrangling — you add one URL as a custom connector. koreanpulse (below) is one such server; it also does the English translation and filer classification, which is the part that otherwise takes a Korean speaker by hand.

Wiring koreanpulse into your assistant

koreanpulse is a Korean stock market intelligence MCP server. It wraps the DART OpenAPI, translates filings to English on demand, and classifies 5%-rule filers against a named-entity list (foreign holders such as BlackRock, Vanguard, Norges, GIC, Temasek; Korean activists such as KCGI, Align Partners, ValueAct, Elliott). It is one honest option for option 3 above — here is how to connect it.

ChatGPT or Claude (hosted, no install)

Add the hosted endpoint as a custom connector:

https://mcp.koreanpulse.dev/mcp
  • ChatGPT — Settings → Connectors → Add custom connector → paste the URL. Authentication: None.
  • Claude — Settings → Connectors → Add custom connector → paste the URL.
  • OpenAI Responses API — add {type: "mcp", server_url: "https://mcp.koreanpulse.dev/mcp"} to your tools array.

The free filing tools work without any DART key of your own — the hosted server uses a shared key for them.

Claude Desktop or Cursor (local install)

Install the package and add a small config block:

pip install koreanpulse
{
  "mcpServers": {
    "koreanpulse": {
      "command": "koreanpulse",
      "env": {
        "DART_API_KEY": "your-free-dart-key",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

The local path uses your own DART key (free, from opendart.fss.or.kr) and your own translation key. The full self-hosting guide is in the repository.

The tools, and prompts that work

Once connected, the assistant has these filing-related tools available. You do not call them by name — you ask a normal question and the assistant picks the tool.

  • lookup_corp_code — resolves a Korean company name (Hangul or romanized) to its DART corp code.
  • resolve_stock_code — resolves a 6-digit KRX ticker (e.g. 005930) to a company.
  • track_korean_filings — the core tool: recent DART filings for a company, translated to English.
  • monitor_foreign_holders and monitor_activist_investors — 5%-rule filings classified by who filed them.

Prompts that work well:

  • “Find Samsung Electronics in DART and show me its filings from the last 7 days, translated to English.”
  • “What did the company with KRX ticker 000660 file recently?” (the assistant resolves 000660 → SK hynix first.)
  • “Any 5%-rule shareholding disclosures on KOSPI names in the last two weeks?”

A note on quotas: DART caps each API key at 40,000 calls/day. If you build your own server, cache filing-list responses with a short TTL so repeated questions about the same window do not burn quota. A hosted server handles this for you.

A free way to start

Before connecting anything, you can see the shape of the data at koreanpulse.dev/today — a daily English snapshot of foreign-holder flows, activist filings, and major DART disclosures, refreshed at the Korean market close. No login, no key. There is a machine-readable version at /today.json if you want to parse it.

Not investment advice. koreanpulse translates and classifies primary-source public data (DART filings, Korean industry news). It is a data and intelligence service — it performs no individualized analysis and makes no recommendation to buy, sell, or hold any security. 자본시장법 §101 면제 영역 — 일반 정보 데이터 제공.