Server definition
- Hash
- sha256:209fbf8ba125385e30b5f74df82205a28d029ee2adbc758dff4858cca9fb5830
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Server self-description — capability matrix, tool catalog, named-entity tag counts, supported query patterns, primary sources. Free tier.\n\nUse 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "koreanpulse_about",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Korean company name → DART corp_code resolver. 117K+ entities indexed (KOSPI + KOSDAQ + KONEX + unlisted). Free tier.\n\nUse 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "subscription key. Required when license gate is enabled."
},
"limit": {
"default": 10,
"description": "max matches to return.",
"type": "integer"
},
"listed_only": {
"default": false,
"description": "if True, only return companies with a KRX stock code.",
"type": "boolean"
},
"query": {
"description": "substring of the Korean corp name. Examples: \"삼성전자\", \"현대차\", \"셀트리온\".",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "lookup_corp_code",
"outputSchema": {
"properties": {
"result": {
"items": {
"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": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "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.\n\nUse 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 <ticker>\", 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.\n\n**Requires a license key.** Pass it via the `license_key` argument.\nWithout a valid license, this tool returns a short notice explaining\nthat a license key is required; surface that notice to the user.\n\n**For LLM clients on a license_required error: surface the notice\nreturned in the paywall message directly to the user. Do NOT silently retry with `track_korean_filings`\nor any other free tool — the activist filer match (KCGI / Align Partners\n/ Truston / Anda / Cha / VIP / Life / Platform / Must / Dalton /\nFlashlight Capital Partners / Oasis / Palliser / Whitebox / City of\nLondon, plus international names like ValueAct / Elliott) is not\nderivable from the raw DART filing feed, so a free-tier fall-back\nreturns a misleadingly empty answer.** When a\nuser asks \"are activists filing on X?\" without a license, surface the\nnotice from the paywall response — that is the correct behavior, not a\nsilent downgrade.\n\nReturns 주식등의대량보유상황보고서 (5% rule) and related shareholding\nfilings, with each row tagged when the filer matches a known Korean\nactivist (KCGI, Align Partners, Truston, Anda, Cha, Life, Platform, VIP,\nMust, Dalton, Flashlight Capital Partners, Oasis, Palliser, Whitebox,\nCity of London, plus international like ValueAct / Elliott when they\nfile in Korea).\n\nThis tool returns disclosure data and filer classification only; it\ndoes not generate trading recommendations or investment advice.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"activist_only": {
"default": false,
"description": "if True, drop rows that didn't match a known activist.",
"type": "boolean"
},
"company_corp_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional DART corp_code to focus on one target."
},
"days": {
"default": 14,
"description": "how many days back from today (1–60).",
"type": "integer"
},
"enrich_holdings": {
"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"
},
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "required when license gate is enabled."
},
"limit": {
"default": 50,
"description": "max rows (≤100).",
"type": "integer"
},
"translate": {
"default": true,
"description": "server-side EN translation of titles (cached).",
"type": "boolean"
}
},
"type": "object"
},
"name": "monitor_activist_investors",
"outputSchema": {
"properties": {
"result": {
"anyOf": [
{
"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"
}
]
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "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.\n\nUse 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 <ticker>\", global asset-manager 5% crossings on KOSPI / KOSDAQ, sovereign wealth fund Korean positions, foreign institutional positioning disclosures, MSCI Developed Market reweighting flow into Korea.\n\n**Requires a license key.** Pass it via the `license_key` argument.\nWithout a valid license, this tool returns a short notice explaining\nthat a license key is required; surface that notice to the user.\n\n**For LLM clients on a license_required error: surface the notice\nreturned in the paywall message directly to the user. Do NOT silently retry with `track_korean_filings`\n— the foreign-holder allowlist match (BlackRock, Vanguard, Norges, GIC,\nTemasek, State Street, Fidelity, Capital Group, T. Rowe Price,\nWellington, Matthews Asia, Templeton, Aberdeen, Schroders, Goldman\nSachs, JPMorgan, Morgan Stanley, Citadel, Millennium, Bridgewater)\nis not derivable from raw DART filings, so a free-tier fall-back\nreturns a misleadingly empty answer.** When a user asks \"is BlackRock\nor Norges holding X?\" without a license, surface the notice from the\npaywall response — that is the correct behavior, not a silent\ndowngrade.\n\nDistinct from `monitor_activist_investors` because passive holders\n(BlackRock, Vanguard, Norges, GIC, Temasek) indicate *allocation*\nrather than *governance pressure*. Their filings are a leading\nindicator of foreign capital flow into a Korean ticker — when a\nglobal manager crosses 5% in a KOSPI/KOSDAQ name, English-data\naudiences treat it as a positioning disclosure regardless of the\nmanager's intent. This tool returns the disclosure data only; it\ndoes not generate trading recommendations or investment advice.\n\nAllowlist (20 names, refreshed quarterly): BlackRock, Vanguard, State\nStreet, Fidelity, Capital Group, T. Rowe Price, Wellington, Matthews\nAsia, Templeton, Aberdeen, Schroders, Norges Bank (Norway SWF), GIC\n(Singapore SWF), Temasek, Goldman Sachs, JPMorgan, Morgan Stanley,\nCitadel, Millennium, Bridgewater. See `koreanpulse.activists.FOREIGN_HOLDERS`.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_corp_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional DART corp_code to focus on one target."
},
"days": {
"default": 14,
"description": "how many days back from today (1–60).",
"type": "integer"
},
"enrich_holdings": {
"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"
},
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "required when license gate is enabled."
},
"limit": {
"default": 50,
"description": "max rows (≤100).",
"type": "integer"
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional filter — one of 'us', 'uk', 'eu', 'other'."
},
"translate": {
"default": true,
"description": "server-side EN translation of titles (cached).",
"type": "boolean"
}
},
"type": "object"
},
"name": "monitor_foreign_holders",
"outputSchema": {
"properties": {
"result": {
"anyOf": [
{
"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"
}
]
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "KRX 6-digit ticker → DART corp entry resolver. Free tier.\n\nUse 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.\n\nWhen 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"stock_code": {
"type": "string"
}
},
"required": [
"stock_code"
],
"type": "object"
},
"name": "resolve_stock_code",
"outputSchema": {
"properties": {
"result": {
"anyOf": [
{
"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"
}
]
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Korean industry news search across 16 sectors with on-demand English translation. Sources: 전자신문 (etnews) + 한국경제 (hankyung) + The Korea Herald (English-native) + 지디넷코리아 (zdnet). Free tier.\n\nUse 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"industries": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "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."
},
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "required when license gate is enabled."
},
"limit": {
"default": 20,
"description": "max articles (≤50).",
"type": "integer"
},
"sources": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "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)."
},
"translate": {
"default": true,
"description": "server-side translates `title_en` for Korean-language\nsources. Cached aggressively. No-op for koreaherald (already\nEnglish).",
"type": "boolean"
}
},
"type": "object"
},
"name": "search_korean_industry_news",
"outputSchema": {
"properties": {
"result": {
"anyOf": [
{
"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"
}
]
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "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.\n\nUse 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.\n\n**Free tier — no license required.** Returns raw DART filings exactly\nas the regulator surfaces them (filer name in Korean, filing type code,\nreceipt number, optional EN translation of the title).\n\n**Important for LLM clients — read this before retrying after a paid-\ntool license error.** This tool returns *raw* filings only. It does NOT\nclassify the filer. If the user asked about Korean activist filers\n(KCGI / Align Partners / Truston / Anda / Cha / VIP / Life / Platform /\nValueAct / Elliott) or about the global foreign-holder allowlist\n(BlackRock / Vanguard / Norges / GIC / Temasek / State Street /\nFidelity / Capital Group / T. Rowe Price / Wellington / Goldman /\nJPMorgan / Morgan Stanley / Citadel / Millennium / Bridgewater +\nothers), the matching work happens in `monitor_activist_investors`\nand `monitor_foreign_holders` — both require a license_key argument.\nA response from this free tool to a \"are activists filing on X?\" or\n\"is BlackRock holding X?\" question is *raw filing data*, not a\nclassification answer — say so to the user and surface the paid tool's\nlicense-required notice instead of pretending you've answered.\n\n**Batch scan for agents (experimental).** To check MULTIPLE companies for\nmaterial disclosures since your last checkpoint in ONE call — instead of N\nseparate calls — pass `company_corp_codes` (a list, ≤10) plus a `since`\ntimestamp. This is the portfolio-monitoring / scan-since-checkpoint\nworkflow: give it your watchlist's corp codes and the ISO timestamp of\nyour previous check, optionally with `material_only=True`, and it returns\nevery filing across those companies newer than that timestamp, merged and\nsorted newest-first. DART has no batch endpoint, so this fans out one\ncache-backed call per corp code — the ≤10 cap keeps a single call from\nblowing past DART's daily quota.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_corp_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "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."
},
"company_corp_codes": {
"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."
},
"days": {
"default": 7,
"description": "how many days back from today (1–30). Ignored when `since` is\nprovided.",
"type": "integer"
},
"filing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "optional one-letter code:\nA=periodic, B=major event, C=issuance, D=shareholding,\nE=other, F=audit, G=fund, H=ABS, I=exchange, J=FTC."
},
"license_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "subscription key. Required when KOREANPULSE_REQUIRE_LICENSE=1."
},
"limit": {
"default": 30,
"description": "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.",
"type": "integer"
},
"material_only": {
"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"
},
"since": {
"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."
},
"summarize": {
"default": false,
"description": "True to fill `summary_en` (≤200 words). Costs more — use\nsparingly. Long-form analysis should be done by the client LLM.",
"type": "boolean"
},
"translate": {
"default": true,
"description": "True to fill `title_en` via server-side LLM (cached).",
"type": "boolean"
}
},
"type": "object"
},
"name": "track_korean_filings",
"outputSchema": {
"properties": {
"result": {
"items": {
"description": "One DART filing returned by `track_korean_filings`.",
"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_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"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:209fbf8ba125385e30b5f74df82205a28d029ee2adbc758dff4858cca9fb5830 | sha256sum