Skip to main content
Glama

Server Details

Korean equities in English: DART filings, activist & foreign-holder classification, KRX news.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
whdrnr2583-cmd/koreanpulse
GitHub Stars
3
Server Listing
koreanpulse

Available Tools

7 tools
koreanpulse_aboutkoreanpulse server self-descriptionA
Read-onlyIdempotent
Inspect

Server self-description — capability matrix, tool catalog, named-entity tag counts, supported query patterns, primary sources. Free tier.

Use this tool when an agent first connects and needs the capability matrix to decide whether this server can answer the user's question, or when the user asks "what can koreanpulse do" or "what data sources does this MCP server provide". Returns a structured dict that downstream agents can ingest directly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context: it returns a structured dict for downstream ingestion and mentions 'Free tier', which goes beyond what annotations convey. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence front-loads the core purpose and content, the second provides usage triggers and return format. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, strong annotations, and output schema, the description fully covers what an agent needs: when to use it, what it returns, and how it can be consumed. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description has no param semantics to add. With 100% schema coverage (an empty schema), the baseline for parameterless tools is 4, and the description fully suffices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is a server self-description, listing its contents (capability matrix, tool catalog, tag counts, query patterns, primary sources). It is immediately distinguishable from sibling tools, which are specific lookup/monitor operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool: on first connection or when users ask 'what can koreanpulse do' or about data sources. Provides clear context, though it does not mention when not to use it or name alternatives beyond the implicit sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_corp_codeResolve Korean company name to DART corp_codeA
Read-onlyIdempotent
Inspect

Korean company name → DART corp_code resolver. 117K+ entities indexed (KOSPI + KOSDAQ + KONEX + unlisted). Free tier.

Use this tool when the user mentions a Korean company by name (Korean characters or English/romanized) and you need the DART corp_code as a precondition for track_korean_filings, monitor_activist_investors, or monitor_foreign_holders. Also use to disambiguate same-name listed vs unlisted entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax matches to return.
queryYessubstring of the Korean corp name. Examples: "삼성전자", "현대차", "셀트리온".
license_keyNosubscription key. Required when license gate is enabled.
listed_onlyNoif True, only return companies with a KRX stock code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety behavior is covered. The description adds valuable context about entity coverage (KOSPI, KOSDAQ, KONEX, unlisted), language support (Korean or English/romanized), and free tier availability. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: one sentence states the core purpose, and one sentence gives usage guidance. Every sentence adds value, and there is no redundant restating of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, an output schema exists, and parameter descriptions are complete, the description fully covers purpose, scope, and usage context. It even mentions free tier and entity universe. There are no significant gaps for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description additionally clarifies that query supports Korean characters or English/romanized names, which is not explicitly in the schema examples. It also hints at listed_only semantics through 'disambiguate same-name listed vs unlisted entities.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Korean company name → DART corp_code resolver.' It clearly distinguishes this tool from siblings like resolve_stock_code by focusing on DART corp_code, not stock code. The mention of 117K+ entities and listed/unlisted coverage adds precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: when a Korean company name is mentioned and a DART corp_code is needed as a precondition for track_korean_filings, monitor_activist_investors, or monitor_foreign_holders. It also mentions disambiguation use. It lacks an explicit 'do not use' statement or named alternative, but the use cases are clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_activist_investorsMonitor Korean activist investor disclosuresA
Read-onlyIdempotent
Inspect

Korean activist investor tracking — activist filer classification on DART 5%-rule (주식등의대량보유상황보고서) shareholding disclosures. Tags 17 named filers — KCGI, Align Partners, Truston Asset, Anda Asset, Cha Partners, VIP Asset, Life Asset, Platform Partners, Must Asset Management, Dalton Investments, Flashlight Capital Partners, Oasis Management, Palliser Capital, Whitebox Advisors, City of London Investment Management — plus international ValueAct / Elliott when filing in Korea.

Use this tool when the user asks about: Korean activist investor tracking, Korean shareholder activism, "is KCGI / Align Partners / Truston / Anda / Cha / VIP / Life / Platform / Must / Dalton / Flashlight / Oasis / Palliser / Whitebox / City of London activist on ", governance pressure on KOSPI / KOSDAQ names, recent activist 5%-rule filings, ValueAct or Elliott Korean positions, Korean Value-Up program activism, MSCI Developed Market activism flow.

Requires a license key. Pass it via the license_key argument. Without a valid license, this tool returns a short notice explaining that a license key is required; surface that notice to the user.

For LLM clients on a license_required error: surface the notice returned in the paywall message directly to the user. Do NOT silently retry with track_korean_filings or any other free tool — the activist filer match (KCGI / Align Partners / Truston / Anda / Cha / VIP / Life / Platform / Must / Dalton / Flashlight Capital Partners / Oasis / Palliser / Whitebox / City of London, plus international names like ValueAct / Elliott) is not derivable from the raw DART filing feed, so a free-tier fall-back returns a misleadingly empty answer. When a user asks "are activists filing on X?" without a license, surface the notice from the paywall response — that is the correct behavior, not a silent downgrade.

Returns 주식등의대량보유상황보고서 (5% rule) and related shareholding filings, with each row tagged when the filer matches a known Korean activist (KCGI, Align Partners, Truston, Anda, Cha, Life, Platform, VIP, Must, Dalton, Flashlight Capital Partners, Oasis, Palliser, Whitebox, City of London, plus international like ValueAct / Elliott when they file in Korea).

This tool returns disclosure data and filer classification only; it does not generate trading recommendations or investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNohow many days back from today (1–60).
limitNomax rows (≤100).
translateNoserver-side EN translation of titles (cached).
license_keyNorequired when license gate is enabled.
activist_onlyNoif True, drop rows that didn't match a known activist.
enrich_holdingsNoif True (default), rows matched to a known activist get their `holding_pct` / `holding_pct_change` / `holder_reporter_ko` filled from DART's majorstock.json (best-effort — a lookup failure leaves those fields None rather than failing the call). Capped at 8 distinct corp_codes per call.
company_corp_codeNooptional DART corp_code to focus on one target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/idempotentHint annotations, the description discloses the license-key requirement and the exact behavior on missing license (surface paywall notice, no silent fallback), plus best-effort enrichment with a cap of 8 corp_codes and fields becoming None on lookup failure. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and well-paragraphed, but it is verbose and repetitive: the activist list appears three times and the license warning is wordy. It could be significantly shortened without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with license gating, a large activist list, fallback pitfalls, and enrichment semantics. The description covers all critical operational aspects: when to use, license error handling, data scope, and non-advice disclaimer. Output schema handles return structure, so no gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3, but the description adds meaningful context: license_key is tied to the license gate and paywall behavior, and enrich_holdings is documented as best-effort with a hard cap. This lifts the semantics above the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as 'Korean activist investor tracking — activist filer classification on DART 5%-rule shareholding disclosures', naming specific activists and the data source. This specific verb+resource pairing distinguishes it from siblings like track_korean_filings and monitor_foreign_holders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated 'Use this tool when...' paragraph lists concrete query patterns, and explicit 'Do NOT silently retry with track_korean_filings or any other free tool' instruction with reasoning. This gives clear when-to-use and when-not-to-use guidance, including alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitor_foreign_holdersMonitor foreign 5%-rule holders on KOSPI/KOSDAQA
Read-onlyIdempotent
Inspect

Monitor foreign investor activity in Korean stocks — foreign-holder classification on DART 5%-rule disclosures by global asset managers and sovereign wealth funds. Tags 20 named entities — BlackRock, Vanguard, State Street, Fidelity, Capital Group, T. Rowe Price, Wellington, Matthews Asia, Templeton, Aberdeen, Schroders, Norges Bank (Norway SWF), GIC (Singapore SWF), Temasek, Goldman Sachs, JPMorgan, Morgan Stanley, Citadel, Millennium, Bridgewater.

Use this tool when the user asks about: foreign investor activity in Korean stocks, foreign capital flow into Korean equities, "is BlackRock / Vanguard / Norges / GIC / Temasek / State Street / Fidelity / Wellington holding ", global asset-manager 5% crossings on KOSPI / KOSDAQ, sovereign wealth fund Korean positions, foreign institutional positioning disclosures, MSCI Developed Market reweighting flow into Korea.

Requires a license key. Pass it via the license_key argument. Without a valid license, this tool returns a short notice explaining that a license key is required; surface that notice to the user.

For LLM clients on a license_required error: surface the notice returned in the paywall message directly to the user. Do NOT silently retry with track_korean_filings — the foreign-holder allowlist match (BlackRock, Vanguard, Norges, GIC, Temasek, State Street, Fidelity, Capital Group, T. Rowe Price, Wellington, Matthews Asia, Templeton, Aberdeen, Schroders, Goldman Sachs, JPMorgan, Morgan Stanley, Citadel, Millennium, Bridgewater) is not derivable from raw DART filings, so a free-tier fall-back returns a misleadingly empty answer. When a user asks "is BlackRock or Norges holding X?" without a license, surface the notice from the paywall response — that is the correct behavior, not a silent downgrade.

Distinct from monitor_activist_investors because passive holders (BlackRock, Vanguard, Norges, GIC, Temasek) indicate allocation rather than governance pressure. Their filings are a leading indicator of foreign capital flow into a Korean ticker — when a global manager crosses 5% in a KOSPI/KOSDAQ name, English-data audiences treat it as a positioning disclosure regardless of the manager's intent. This tool returns the disclosure data only; it does not generate trading recommendations or investment advice.

Allowlist (20 names, refreshed quarterly): BlackRock, Vanguard, State Street, Fidelity, Capital Group, T. Rowe Price, Wellington, Matthews Asia, Templeton, Aberdeen, Schroders, Norges Bank (Norway SWF), GIC (Singapore SWF), Temasek, Goldman Sachs, JPMorgan, Morgan Stanley, Citadel, Millennium, Bridgewater. See koreanpulse.activists.FOREIGN_HOLDERS.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNohow many days back from today (1–60).
limitNomax rows (≤100).
originNooptional filter — one of 'us', 'uk', 'eu', 'other'.
translateNoserver-side EN translation of titles (cached).
license_keyNorequired when license gate is enabled.
enrich_holdingsNoif True (default), rows get their `holding_pct` / `holding_pct_change` / `holder_reporter_ko` filled from DART's majorstock.json (best-effort — a lookup failure leaves those fields None rather than failing the call). Capped at 8 distinct corp_codes per call.
company_corp_codeNooptional DART corp_code to focus on one target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds substantial behavioral context: license-key enforcement, the exact behavior on a license_required error (surface a notice), best-effort enrichment that can leave fields None, and a disclaimer that it returns data only, not investment advice. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-organized, front-loading the core purpose and then layering usage, caveats, and sibling differentiation. The allowlist appears twice (in the intro and at the end), which is a slight redundancy, but each section earns its place given the tool's licensing and fallback nuances.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (license gate, distinct input parameters, sibling overlap, 20-name allowlist), the description covers all essential operational behavior: when to use, license handling, fallback pitfalls, data limitations, and specific parameter nuances. An output schema exists, so return values don't need explaining. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value for `license_key` by explaining the paywall behavior, and for `enrich_holdings` by clarifying that failures leave fields None rather than failing. These extras elevate beyond pure schema repetition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Monitor foreign investor activity in Korean stocks — foreign-holder classification on DART 5%-rule disclosures.' It clearly differentiates from the sibling tool `monitor_activist_investors` by contrasting passive holders (allocation) vs. activist investors (governance pressure), making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage guidance: a concrete list of user queries that should trigger this tool, explicit license-key requirements, and a direct warning not to silently fall back to `track_korean_filings`. It also explains why the fallback is misleading, which helps the agent decide correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_stock_codeResolve KRX 6-digit ticker to DART corp entryA
Read-onlyIdempotent
Inspect

KRX 6-digit ticker → DART corp entry resolver. Free tier.

Use this tool when the user provides a 6-digit Korean stock code (e.g. 005930 for Samsung Electronics, 000660 for SK hynix, 035420 for NAVER, 035720 for Kakao, 005380 for Hyundai Motor) and you need the company name + corp_code for downstream filings or industry-news lookups.

When the code is unresolved but looks like a Korean preferred-stock ticker (6 digits, non-zero last digit, e.g. 005935 for 삼성전자우), the response carries an additive related_common_stock hint pointing at the common-stock entry — the corp registry only maps common stock, so no preferred-stock corp_code is fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_codeYes
license_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/idempotent annotations, the description discloses the free tier, the common-stock-only mapping limitation, and the unresolved preferred-stock behavior with `related_common_stock` hint. It also states that no preferred-stock corp_code is fabricated, which is valuable non-obvious behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and free-tier note, followed by clear usage and an edge-case explanation. It is somewhat long with many examples, but every sentence contributes useful information without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema available, the description does not need to enumerate return fields. It provides the main purpose, usage trigger, and a key edge case, making it sufficiently complete for an agent; only minor gaps remain around license_key and rate-limit details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only has typed parameters with no descriptions, so the description's examples (005930, 000660, 035420) and format guidance ('6-digit Korean stock code') add meaning to `stock_code`. However, the optional `license_key` parameter is not explained in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear mapping statement ('KRX 6-digit ticker → DART corp entry resolver') and provides concrete examples (005930, 000660). This directly states the tool's function and distinguishes it from sibling lookup/search tools by identifying the precise input and output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this tool when the user provides a 6-digit Korean stock code...' and frames the need as getting corp_code for downstream filings or news lookups. It lacks explicit exclusions or alternative tool names, but the context is clear enough for an agent to select it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_korean_industry_newsSearch Korean industry news (16 sectors)A
Read-onlyIdempotent
Inspect

Korean industry news search across 16 sectors with on-demand English translation. Sources: 전자신문 (etnews) + 한국경제 (hankyung) + The Korea Herald (English-native) + 지디넷코리아 (zdnet). Free tier.

Use this tool when the user asks about: Korean industry trends, sector-specific news on Korean equities (Korean semiconductors / K-battery / K-shipbuilding / K-biotech / K-defense / Korean auto / EV charging / Korean AI / steel / petrochem / construction / fintech / gaming / e-commerce / telco / energy), recent corporate developments not yet captured in DART filings, English summaries of Korean industry coverage. Industry tags listed below — pass them in industries to filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax articles (≤50).
sourcesNofilter to source keys (etnews, hankyung, koreaherald, zdnet). None = all. koreaherald is English-native — its titles are returned as-is (no ko->en translation round-trip needed).
translateNoserver-side translates `title_en` for Korean-language sources. Cached aggressively. No-op for koreaherald (already English).
industriesNofilter to one or more industry tags. Available: semiconductor, shipbuilding, battery, biotech, defense, auto, ev_charging, ai, steel, petrochem, construction, fintech, gaming, ecommerce, telco, energy. An unrecognized tag is never silently dropped or errored — see Returns below.
license_keyNorequired when license gate is enabled.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful context such as 'Free tier', the availability of on-demand English translation, and the specific sources, without contradicting any annotations. It does not describe caching or return behavior, but these are partly covered by the schema and output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently organized into two focused parts: a summary sentence and a 'Use this tool when' list. It is front-loaded with the core function, avoids unnecessary repetition, and every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage scenarios, sources, and the free tier, while annotations and schema handle safety, parameters, and return values. The only minor gap is that the description references 'Returns below' but does not include that section itself (the schema covers it), and no explicit mention is made of rate limits or freshness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 5 parameters have rich descriptions in the schema, so the schema coverage is 100%. The description adds only marginal parameter-related context (e.g., mentioning the industries filter) and relies on the schema for full parameter semantics, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (search) on a specific resource (Korean industry news across 16 sectors) and names concrete sources. It distinguishes itself from sibling tools (which are about corporate codes, filings, and monitored entities) by its news-search focus and translation feature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists when to use the tool with concrete scenarios (e.g., 'Korean industry trends', 'recent corporate developments not yet captured in DART filings'). However, it does not explicitly state when not to use it or name alternative tools, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_korean_filingsTrack Korean DART filingsA
Read-onlyIdempotent
Inspect

Track Korean DART (전자공시) stock filings in English — real-time corporate disclosures for KOSPI / KOSDAQ / KONEX / KRX listed companies: 5%-rule shareholding disclosures, M&A, periodic reports, capital issuance, insider trading, audit reports. Free tier.

Use this tool when the user asks about: recent Korean stock filings, DART disclosures, Korean market data, KOSPI/KOSDAQ regulatory events, "track Korean DART filings", "what did Samsung / Hyundai / SK / LG / NAVER / Kakao / 셀트리온 file", company-specific filing history, periodic / major-event / issuance / shareholding / audit filings on Korean equities.

Free tier — no license required. Returns raw DART filings exactly as the regulator surfaces them (filer name in Korean, filing type code, receipt number, optional EN translation of the title).

Important for LLM clients — read this before retrying after a paid- tool license error. This tool returns raw filings only. It does NOT classify the filer. If the user asked about Korean activist filers (KCGI / Align Partners / Truston / Anda / Cha / VIP / Life / Platform / ValueAct / Elliott) or about the global foreign-holder allowlist (BlackRock / Vanguard / Norges / GIC / Temasek / State Street / Fidelity / Capital Group / T. Rowe Price / Wellington / Goldman / JPMorgan / Morgan Stanley / Citadel / Millennium / Bridgewater + others), the matching work happens in monitor_activist_investors and monitor_foreign_holders — both require a license_key argument. A response from this free tool to a "are activists filing on X?" or "is BlackRock holding X?" question is raw filing data, not a classification answer — say so to the user and surface the paid tool's license-required notice instead of pretending you've answered.

Batch scan for agents (experimental). To check MULTIPLE companies for material disclosures since your last checkpoint in ONE call — instead of N separate calls — pass company_corp_codes (a list, ≤10) plus a since timestamp. This is the portfolio-monitoring / scan-since-checkpoint workflow: give it your watchlist's corp codes and the ISO timestamp of your previous check, optionally with material_only=True, and it returns every filing across those companies newer than that timestamp, merged and sorted newest-first. DART has no batch endpoint, so this fans out one cache-backed call per corp code — the ≤10 cap keeps a single call from blowing past DART's daily quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNohow many days back from today (1–30). Ignored when `since` is provided.
limitNomax filings to return (≤100). DART returns most-recent first, so on a busy window the older end of the range is dropped first. Narrow `days` or `filing_type` if you need older items. In batch mode (`company_corp_codes`) `limit` applies PER COMPANY, not to the merged set, so a heavy filer can never crowd a quieter company out of the results: an empty result for a company means that company genuinely filed nothing in the window. A batch call can therefore return up to `limit × len(company_corp_codes)` rows.
sinceNoOPTIONAL ISO-8601 date or datetime (e.g. '2026-05-01' or '2026-05-01T09:00:00'). When provided it is the cutoff instead of `days` — only filings with `filed_at >= since` are returned. Use it to fetch only what is new since your last checkpoint. `filed_at` is date-granular (KST), so a time component filters at day boundaries. A malformed value raises a validation error. When omitted, the `days` window is used exactly as before.
summarizeNoTrue to fill `summary_en` (≤200 words). Costs more — use sparingly. Long-form analysis should be done by the client LLM.
translateNoTrue to fill `title_en` via server-side LLM (cached).
filing_typeNooptional one-letter code: A=periodic, B=major event, C=issuance, D=shareholding, E=other, F=audit, G=fund, H=ABS, I=exchange, J=FTC.
license_keyNosubscription key. Required when KOREANPULSE_REQUIRE_LICENSE=1.
material_onlyNoOPTIONAL. When True, return only filings whose `red_flags` list is non-empty (governance/distress-tagged — see the red_flags catalog below). Applies to both single and batch queries. Reuses the existing red-flag tagging; adds no new classification.
company_corp_codeNo8-digit DART corp code (single company). Use `lookup_corp_code` first to resolve a company name. Omit to query all companies. Ignored when `company_corp_codes` (plural) is provided non-empty — the plural list takes precedence.
company_corp_codesNoOPTIONAL list of up to 10 corp codes for batch mode. When provided non-empty, the tool queries each corp code concurrently (one cache-backed DART call each), merges the results, and sorts newest-first — use this to scan a whole watchlist in one call. More than 10 codes raises a validation error (DART has no batch endpoint; this is N calls, so the cap protects the daily quota). Takes precedence over `company_corp_code` (singular) when both are given.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that results are raw, unclassified, and that filer names are in Korean; it warns LLM clients against pretending to answer activist/holder questions and explains the batch fan-out quota. This is rich behavioral context with no contradiction to annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with bolded sections (Free tier, Important for LLM clients, Batch scan). Each section carries essential caveats and use-case guidance, so it earns its length. Slight redundancy with the schema parameter descriptions, but overall it is organized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity — free vs paid tier, raw vs classified output, batch quotas — the description covers all critical aspects: return format, licensing, sibling-tool boundaries, and batch semantics. The presence of an output schema further fills any gap, making this complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with detailed descriptions for all 10 parameters, so baseline is 3. The description adds a workflow narrative for batch scanning (company_corp_codes + since) and explains the per-company limit behavior, reinforcing but not significantly extending the schema. I give a 4 for the added workflow clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Track Korean DART stock filings in English' — and enumerates covered filing types (5%-rule, M&A, periodic reports). It clearly distinguishes from sibling tools by stating this tool returns raw filings and does not classify activist/foreign-holder entities, which belong to monitor_activist_investors and monitor_foreign_holders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use criteria ('Use this tool when the user asks about…') and explicitly names alternatives for activist investors and foreign holders, with the caveat about license_key. This is model guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updates
    • Changedmonitor_activist_investors1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing flagged with activist-investor heuristics.",
        -      "properties": {
        -        "activist_label": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        -        },
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "data_fetched_at": {
        -          "anyOf": [
        -            {
        -              "format": "date-time",
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "holder_reporter_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        -        },
        -        "holding_pct": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        -        },
        -        "holding_pct_change": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        -        },
        -        "is_likely_activist": {
        -          "default": false,
        -          "description": "Filer name matched a known Korean activist allowlist.",
        -          "type": "boolean"
        -        },
        -        "market": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        -        },
        -        "query_total_count": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "red_flags": {
        -          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing flagged with activist-investor heuristics.",
        +      "properties": {
        +        "activist_label": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        +        },
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "data_fetched_at": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "holder_reporter_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "holding_pct": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        +        },
        +        "holding_pct_change": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "is_correction": {
        +          "default": false,
        +          "description": "True when this filing is a DART correction re-filing — its title carries a leading correction tag ([기재정정] content correction or [첨부정정] attachment correction). False for original filings.",
        +          "type": "boolean"
        +        },
        +        "is_likely_activist": {
        +          "default": false,
        +          "description": "Filer name matched a known Korean activist allowlist.",
        +          "type": "boolean"
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "previous_receipt_no": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "receipt_no of the earlier filing this correction amends, resolved only when that original is present in the same fetched window (matched by corp_code + exact normalized report name + earlier receipt number). None when this is not a correction, when the original fell outside the fetched window, or when no confident match was found — a wrong link is worse than no link."
        +        },
        +        "query_total_count": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedmonitor_foreign_holders1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        -      "properties": {
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "data_fetched_at": {
        -          "anyOf": [
        -            {
        -              "format": "date-time",
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "holder_label": {
        -          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        -          "type": "string"
        -        },
        -        "holder_origin": {
        -          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        -          "type": "string"
        -        },
        -        "holder_reporter_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        -        },
        -        "holding_pct": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        -        },
        -        "holding_pct_change": {
        -          "anyOf": [
        -            {
        -              "type": "number"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        -        },
        -        "market": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        -        },
        -        "query_total_count": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "red_flags": {
        -          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution",
        -        "holder_label",
        -        "holder_origin"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        +      "properties": {
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "data_fetched_at": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "holder_label": {
        +          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        +          "type": "string"
        +        },
        +        "holder_origin": {
        +          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        +          "type": "string"
        +        },
        +        "holder_reporter_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "holding_pct": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        +        },
        +        "holding_pct_change": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "is_correction": {
        +          "default": false,
        +          "description": "True when this filing is a DART correction re-filing — its title carries a leading correction tag ([기재정정] content correction or [첨부정정] attachment correction). False for original filings.",
        +          "type": "boolean"
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "previous_receipt_no": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "receipt_no of the earlier filing this correction amends, resolved only when that original is present in the same fetched window (matched by corp_code + exact normalized report name + earlier receipt number). None when this is not a correction, when the original fell outside the fetched window, or when no confident match was found — a wrong link is worse than no link."
        +        },
        +        "query_total_count": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution",
        +        "holder_label",
        +        "holder_origin"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedtrack_korean_filings8 fields changed
      • changedInput schema / properties / company_corp_code / description
        Previous value: -"8-digit DART corp code. Use `lookup_corp_code` first\nto resolve a company name. Omit to query all companies."New value: +"8-digit DART corp code (single company). Use\n`lookup_corp_code` first to resolve a company name. Omit to query\nall companies. Ignored when `company_corp_codes` (plural) is\nprovided non-empty — the plural list takes precedence."
      • addedInput schema / properties / company_corp_codes
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "OPTIONAL list of up to 10 corp codes for batch\nmode. When provided non-empty, the tool queries each corp code\nconcurrently (one cache-backed DART call each), merges the\nresults, and sorts newest-first — use this to scan a whole\nwatchlist in one call. More than 10 codes raises a validation\nerror (DART has no batch endpoint; this is N calls, so the cap\nprotects the daily quota). Takes precedence over\n`company_corp_code` (singular) when both are given."
        +}
      • changedInput schema / properties / days / description
        Previous value: -"how many days back from today (1–30)."New value: +"how many days back from today (1–30). Ignored when `since` is\nprovided."
      • changedInput schema / properties / limit / description
        Previous value: -"max filings to return (≤100). DART returns most-recent first,\nso on a busy window the older end of the range is dropped first.\nNarrow `days` or `filing_type` if you need older items."New value: +"max filings to return (≤100). DART returns most-recent first,\nso on a busy window the older end of the range is dropped first.\nNarrow `days` or `filing_type` if you need older items.\nIn batch mode (`company_corp_codes`) `limit` applies PER COMPANY,\nnot to the merged set, so a heavy filer can never crowd a quieter\ncompany out of the results: an empty result for a company means\nthat company genuinely filed nothing in the window. A batch call\ncan therefore return up to `limit × len(company_corp_codes)` rows."
      • addedInput schema / properties / material_only
        Added value: +{
        +  "default": false,
        +  "description": "OPTIONAL. When True, return only filings whose\n`red_flags` list is non-empty (governance/distress-tagged — see\nthe red_flags catalog below). Applies to both single and batch\nqueries. Reuses the existing red-flag tagging; adds no new\nclassification.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / since
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "OPTIONAL ISO-8601 date or datetime (e.g. '2026-05-01' or\n'2026-05-01T09:00:00'). When provided it is the cutoff instead of\n`days` — only filings with `filed_at >= since` are returned. Use\nit to fetch only what is new since your last checkpoint.\n`filed_at` is date-granular (KST), so a time component filters at\nday boundaries. A malformed value raises a validation error.\nWhen omitted, the `days` window is used exactly as before."
        +}
      • addedOutput schema / properties / result / items / properties / is_correction
        Added value: +{
        +  "default": false,
        +  "description": "True when this filing is a DART correction re-filing — its title carries a leading correction tag ([기재정정] content correction or [첨부정정] attachment correction). False for original filings.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / result / items / properties / previous_receipt_no
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "receipt_no of the earlier filing this correction amends, resolved only when that original is present in the same fetched window (matched by corp_code + exact normalized report name + earlier receipt number). None when this is not a correction, when the original fell outside the fetched window, or when no confident match was found — a wrong link is worse than no link."
        +}
  2. 5 tool updates
    • Changedmonitor_activist_investors2 fields changed
      • addedInput schema / properties / enrich_holdings
        Added value: +{
        +  "default": true,
        +  "description": "if True (default), rows matched to a known activist\nget their `holding_pct` / `holding_pct_change` / `holder_reporter_ko`\nfilled from DART's majorstock.json (best-effort — a lookup\nfailure leaves those fields None rather than failing the call).\nCapped at 8 distinct corp_codes per call.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing flagged with activist-investor heuristics.",
        -      "properties": {
        -        "activist_label": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        -        },
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "is_likely_activist": {
        -          "default": false,
        -          "description": "Filer name matched a known Korean activist allowlist.",
        -          "type": "boolean"
        -        },
        -        "market": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "red_flags": {
        -          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched.",
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing flagged with activist-investor heuristics.",
        +      "properties": {
        +        "activist_label": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        +        },
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "data_fetched_at": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "holder_reporter_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "holding_pct": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        +        },
        +        "holding_pct_change": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "is_likely_activist": {
        +          "default": false,
        +          "description": "Filer name matched a known Korean activist allowlist.",
        +          "type": "boolean"
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "query_total_count": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedmonitor_foreign_holders2 fields changed
      • addedInput schema / properties / enrich_holdings
        Added value: +{
        +  "default": true,
        +  "description": "if True (default), rows get their `holding_pct` /\n`holding_pct_change` / `holder_reporter_ko` filled from DART's\nmajorstock.json (best-effort — a lookup failure leaves those\nfields None rather than failing the call). Capped at 8 distinct\ncorp_codes per call.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        -      "properties": {
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "holder_label": {
        -          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        -          "type": "string"
        -        },
        -        "holder_origin": {
        -          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        -          "type": "string"
        -        },
        -        "market": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "red_flags": {
        -          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched.",
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution",
        -        "holder_label",
        -        "holder_origin"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        +      "properties": {
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "data_fetched_at": {
        +          "anyOf": [
        +            {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "holder_label": {
        +          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        +          "type": "string"
        +        },
        +        "holder_origin": {
        +          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        +          "type": "string"
        +        },
        +        "holder_reporter_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "holding_pct": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        +        },
        +        "holding_pct_change": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "query_total_count": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution",
        +        "holder_label",
        +        "holder_origin"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedresolve_stock_code1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "description": "One entry from DART's corp index.",
        -    "properties": {
        -      "corp_code": {
        -        "type": "string"
        -      },
        -      "corp_name": {
        -        "type": "string"
        -      },
        -      "modify_date": {
        -        "type": "string"
        -      },
        -      "stock_code": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "corp_code",
        -      "corp_name",
        -      "stock_code",
        -      "modify_date"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "One entry from DART's corp index.",
        +    "properties": {
        +      "corp_code": {
        +        "type": "string"
        +      },
        +      "corp_name": {
        +        "type": "string"
        +      },
        +      "modify_date": {
        +        "type": "string"
        +      },
        +      "stock_code": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "corp_code",
        +      "corp_name",
        +      "stock_code",
        +      "modify_date"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedsearch_korean_industry_news4 fields changed
      • changedInput schema / properties / industries / description
        Previous value: -"filter to one or more industry tags. Available:\nsemiconductor, shipbuilding, battery, biotech, defense, auto,\nev_charging, ai, steel, petrochem, construction, fintech, gaming,\necommerce, telco, energy."New value: +"filter to one or more industry tags. Available:\nsemiconductor, shipbuilding, battery, biotech, defense, auto,\nev_charging, ai, steel, petrochem, construction, fintech, gaming,\necommerce, telco, energy. An unrecognized tag is never silently\ndropped or errored — see Returns below."
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "description": "One Korean news article returned by `search_korean_industry_news`.",
        +      "properties": {
        +        "attribution": {
        +          "description": "Required attribution string",
        +          "type": "string"
        +        },
        +        "industries": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "published_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "relevance_score": {
        +          "default": 0.5,
        +          "maximum": 1,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "snippet": {
        +          "default": "",
        +          "description": "~300-char plain-text excerpt from the RSS `description` field (HTML-unescaped, tags stripped, whitespace collapsed). No additional network fetch — derived from the same feed item as the title. Empty when the source's feed carries no description.",
        +          "type": "string"
        +        },
        +        "source_key": {
        +          "description": "Source id from sources.NEWS_SOURCES",
        +          "type": "string"
        +        },
        +        "source_name": {
        +          "description": "Korean source name for display",
        +          "type": "string"
        +        },
        +        "summary_en": {
        +          "description": "<= 200 word LLM summary in English. Always attributed.",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "description": "LLM-translated English title",
        +          "type": "string"
        +        },
        +        "title_ko": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "title_ko",
        +        "title_en",
        +        "source_key",
        +        "source_name",
        +        "url",
        +        "published_at",
        +        "summary_en",
        +        "attribution"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{
        -  "description": "One Korean news article returned by `search_korean_industry_news`.",
        -  "properties": {
        -    "attribution": {
        -      "description": "Required attribution string",
        -      "type": "string"
        -    },
        -    "industries": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "published_at": {
        -      "format": "date-time",
        -      "type": "string"
        -    },
        -    "relevance_score": {
        -      "default": 0.5,
        -      "maximum": 1,
        -      "minimum": 0,
        -      "type": "number"
        -    },
        -    "source_key": {
        -      "description": "Source id from sources.NEWS_SOURCES",
        -      "type": "string"
        -    },
        -    "source_name": {
        -      "description": "Korean source name for display",
        -      "type": "string"
        -    },
        -    "summary_en": {
        -      "description": "<= 200 word LLM summary in English. Always attributed.",
        -      "type": "string"
        -    },
        -    "title_en": {
        -      "description": "LLM-translated English title",
        -      "type": "string"
        -    },
        -    "title_ko": {
        -      "type": "string"
        -    },
        -    "url": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "title_ko",
        -    "title_en",
        -    "source_key",
        -    "source_name",
        -    "url",
        -    "published_at",
        -    "summary_en",
        -    "attribution"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Changedtrack_korean_filings6 fields changed
      • addedOutput schema / properties / result / items / properties / data_fetched_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "UTC timestamp this filing was live-fetched from DART (as-of time for the data). None for rows served from a cache entry written before this field existed."
        +}
      • addedOutput schema / properties / result / items / properties / holder_reporter_ko
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "DART majorstock reporter name (`repror`) matched to this filing's filer. Same paid-tier enrichment as `holding_pct`."
        +}
      • addedOutput schema / properties / result / items / properties / holding_pct
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Reporter's current holding percentage from DART majorstock.json (대량보유상황보고, `stkrt`). Paid-tier enrichment on monitor_activist_investors / monitor_foreign_holders rows only; None when not looked up or no reporter match was found."
        +}
      • addedOutput schema / properties / result / items / properties / holding_pct_change
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Change in holding percentage versus the prior majorstock report (`stkrt_irds`). Same paid-tier enrichment as `holding_pct`."
        +}
      • addedOutput schema / properties / result / items / properties / query_total_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "DART's reported total_count for the query that produced this filing — the full match count before `limit`/`page_count` truncation, not the number of rows returned. None on cached rows written before this field existed."
        +}
      • changedOutput schema / properties / result / items / properties / red_flags / description
        Previous value: -"Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched."New value: +"Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction', 'management_designation', 'delisting_risk', 'trading_halt', 'reverse_split', 'short_term_borrowing', 'going_concern'. Empty when no keyword matched."
  3. 3 tool updates
    • Changedmonitor_activist_investors1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing flagged with activist-investor heuristics.",
        -      "properties": {
        -        "activist_label": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        -        },
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "is_likely_activist": {
        -          "default": false,
        -          "description": "Filer name matched a known Korean activist allowlist.",
        -          "type": "boolean"
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing flagged with activist-investor heuristics.",
        +      "properties": {
        +        "activist_label": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Canonical activist name if matched (e.g. 'KCGI', 'Align Partners')."
        +        },
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "is_likely_activist": {
        +          "default": false,
        +          "description": "Filer name matched a known Korean activist allowlist.",
        +          "type": "boolean"
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedmonitor_foreign_holders1 field changed
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        -      "properties": {
        -        "attribution": {
        -          "type": "string"
        -        },
        -        "corp_code": {
        -          "description": "DART 8-digit corp code",
        -          "type": "string"
        -        },
        -        "corp_name_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "corp_name_ko": {
        -          "type": "string"
        -        },
        -        "dart_url": {
        -          "description": "Human-readable DART URL",
        -          "type": "string"
        -        },
        -        "filed_at": {
        -          "format": "date-time",
        -          "type": "string"
        -        },
        -        "filer_name_ko": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        -        },
        -        "filing_type": {
        -          "description": "DART filing type code (A–J)",
        -          "type": "string"
        -        },
        -        "filing_type_label_en": {
        -          "type": "string"
        -        },
        -        "filing_type_label_ko": {
        -          "type": "string"
        -        },
        -        "holder_label": {
        -          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        -          "type": "string"
        -        },
        -        "holder_origin": {
        -          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        -          "type": "string"
        -        },
        -        "raw_xml_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "OpenAPI raw XML if applicable"
        -        },
        -        "receipt_no": {
        -          "description": "DART receipt number; key for fetching",
        -          "type": "string"
        -        },
        -        "stock_code": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "6-digit KRX stock code if listed"
        -        },
        -        "summary_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM summary, only set when caller asks"
        -        },
        -        "title": {
        -          "description": "Filing title (Korean)",
        -          "type": "string"
        -        },
        -        "title_en": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "description": "LLM-translated title"
        -        }
        -      },
        -      "required": [
        -        "corp_code",
        -        "corp_name_ko",
        -        "filing_type",
        -        "filing_type_label_ko",
        -        "filing_type_label_en",
        -        "title",
        -        "receipt_no",
        -        "filed_at",
        -        "dart_url",
        -        "attribution",
        -        "holder_label",
        -        "holder_origin"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "description": "A type-D filing matched against the foreign-passive-holder allowlist.\n\nUsed as a leading indicator of foreign capital flow into a Korean\nticker. Distinct from `ActivistFiling` because passive holders\n(BlackRock, Vanguard, SWFs) signal allocation rather than governance\npressure.",
        +      "properties": {
        +        "attribution": {
        +          "type": "string"
        +        },
        +        "corp_code": {
        +          "description": "DART 8-digit corp code",
        +          "type": "string"
        +        },
        +        "corp_name_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null
        +        },
        +        "corp_name_ko": {
        +          "type": "string"
        +        },
        +        "dart_url": {
        +          "description": "Human-readable DART URL",
        +          "type": "string"
        +        },
        +        "filed_at": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "filer_name_ko": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Reporting entity (DART `flr_nm`). For type-D shareholding disclosures this is typically the holder (often an activist); for periodic reports it's the company itself."
        +        },
        +        "filing_type": {
        +          "description": "DART filing type code (A–J)",
        +          "type": "string"
        +        },
        +        "filing_type_label_en": {
        +          "type": "string"
        +        },
        +        "filing_type_label_ko": {
        +          "type": "string"
        +        },
        +        "holder_label": {
        +          "description": "Canonical English holder name (e.g. 'BlackRock', 'Norges Bank (Norway SWF)').",
        +          "type": "string"
        +        },
        +        "holder_origin": {
        +          "description": "Holder origin: 'us', 'uk', 'eu', 'other', or 'kr' (rare).",
        +          "type": "string"
        +        },
        +        "market": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +        },
        +        "raw_xml_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "OpenAPI raw XML if applicable"
        +        },
        +        "receipt_no": {
        +          "description": "DART receipt number; key for fetching",
        +          "type": "string"
        +        },
        +        "red_flags": {
        +          "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stock_code": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "6-digit KRX stock code if listed"
        +        },
        +        "summary_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM summary, only set when caller asks"
        +        },
        +        "title": {
        +          "description": "Filing title (Korean)",
        +          "type": "string"
        +        },
        +        "title_en": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "LLM-translated title"
        +        }
        +      },
        +      "required": [
        +        "corp_code",
        +        "corp_name_ko",
        +        "filing_type",
        +        "filing_type_label_ko",
        +        "filing_type_label_en",
        +        "title",
        +        "receipt_no",
        +        "filed_at",
        +        "dart_url",
        +        "attribution",
        +        "holder_label",
        +        "holder_origin"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
    • Changedtrack_korean_filings2 fields changed
      • addedOutput schema / properties / result / items / properties / market
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Listing market from DART corp_cls: 'KOSPI', 'KOSDAQ', 'KONEX', or 'OTHER'. None when DART omits corp_cls."
        +}
      • addedOutput schema / properties / result / items / properties / red_flags
        Added value: +{
        +  "description": "Governance/distress tags inferred from the filing title, e.g. 'cb_issuance', 'controlling_shareholder_change', 'rehabilitation', 'audit_opinion', 'disclosure_violation', 'rights_issue', 'capital_reduction'. Empty when no keyword matched.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  4. 1 tool update
    • Changedsearch_korean_industry_news2 fields changed
      • changedInput schema / properties / sources / description
        Previous value: -"filter to source keys (etnews, hankyung). None = all."New value: +"filter to source keys (etnews, hankyung, koreaherald, zdnet).\nNone = all. koreaherald is English-native — its titles are\nreturned as-is (no ko->en translation round-trip needed)."
      • changedInput schema / properties / translate / description
        Previous value: -"server-side translates `title_en`. Cached aggressively."New value: +"server-side translates `title_en` for Korean-language\nsources. Cached aggressively. No-op for koreaherald (already\nEnglish)."
  5. 7 tool updates
    • First observedkoreanpulse_about
    • First observedlookup_corp_code
    • First observedmonitor_activist_investors
    • First observedmonitor_foreign_holders
    • First observedresolve_stock_code
    • First observedsearch_korean_industry_news
    • First observedtrack_korean_filings

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.
    248
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to South Korea's DART (Data Analysis, Retrieval and Transfer System) financial disclosure system, enabling users to retrieve corporate information, financial statements, debt summaries, subsidiary investments, employee data, and stock information for Korean companies.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables LLM agents to access Korean stock market data including DART disclosures, financial statements, and KOSPI/KOSDAQ prices, with an English-first interface designed for non-Korean speaking analysts.
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation4/5

Tools are mostly distinct, but lookup_corp_code and resolve_stock_code both resolve to corp codes (by name vs ticker), and track_korean_filings overlaps with the two monitor tools on raw 5% filings. However, descriptions are explicit about the differences, especially the paid monitors' classification role, so an agent can disambiguate with careful reading.

Naming Consistency5/5

All tools follow verb_noun snake_case pattern (lookup_corp_code, monitor_activist_investors, monitor_foreign_holders, resolve_stock_code, search_korean_industry_news, track_korean_filings). The only exception is koreanpulse_about, which uses a server-namespace prefix and 'about' as a conventional meta tool, not a verb mismatch.

Tool Count5/5

Seven tools is well within the ideal 3-15 range. Each tool serves a distinct purpose: about for discovery, two resolvers for different identifier types, two paid monitors for different investor categories, one raw filing tracker, and one news search. No redundant or filler tools.

Completeness4/5

The tool set covers the core workflow: identifying companies (lookup_corp_code, resolve_stock_code), tracking raw filings (track_korean_filings), monitoring specific investor types (monitor_activist_investors, monitor_foreign_holders), and industry news (search_korean_industry_news). Minor gaps exist, such as no direct company profile/financial statements tool, and the paid monitor tools require licenses, but the surface is reasonably complete for its stated niche.