StockDrifts
Rated 13F funds with average buy prices, company KPIs, Japan investor ratings, Korea insider buys.
Should I use this
Quality & Safety
Findings (14)
- LOWin list_insider_trades_kr
- LOWin list_recent_trades_kr
- LOWin list_leaderboard_kr
- LOWin list_insider_filings_jp
- LOWin list_recent_filings_jp
- LOWin list_investor_filings_jp
- LOWin list_leaderboard_jp
- LOWin list_convergence_jp
- LOWin list_investor_periods_us
- LOWin get_investor_changes_us
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp": {
"url": "https://mcp.stockdrifts.io/mcp/"
}
}
}Remote endpoints
https://mcp.stockdrifts.io/mcp/streamable-httpWhat it can do
Tool inventory
Tools (32)
π’list_insider_trades_kr(stock_code, days, limit, page, transaction_types, ...)
Insider trades for one KR ticker
Input Schema
{
"type": "object",
"properties": {
"stock_code": {
"type": "string",
"title": "Stock Code"
},
"days": {
"type": "integer",
"maximum": 9999,
"minimum": 1,
"default": 180,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number.",
"default": 0,
"title": "Page"
},
"transaction_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to BUY only, SELL only, or both. Defaults to both.",
"title": "Transaction Types"
},
"min_value_krw": {
"type": "number",
"minimum": 0,
"description": "Drop trades worth less than this many KRW.",
"title": "Min Value Krw"
},
"acquisition_method": {
"type": "string",
"description": "Filter to one acquisition_method (e.g. 'μ₯λ΄λ§€μ' for open-market buys). Useful for excluding stock-dividend (μ£Όμλ°°λΉ) bookings.",
"title": "Acquisition Method"
},
"position_category": {
"type": "string",
"description": "Filter to a position bucket. One of: CEO, CFO, COO, CTO, Chairman, Co-CEO, President, Vice Chairman.",
"title": "Position Category"
}
},
"required": [
"stock_code"
]
}π’get_insider_summary_kr(stock_code)
Pre-aggregated insider summary for one KR ticker
Input Schema
{
"type": "object",
"properties": {
"stock_code": {
"type": "string",
"title": "Stock Code"
}
},
"required": [
"stock_code"
]
}π’list_recent_trades_kr(days, limit, page, transaction_types, min_value_krw, ...)
Recent KR insider trades across all tickers
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 7,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number.",
"default": 0,
"title": "Page"
},
"transaction_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to BUY only, SELL only, or both. Defaults to both.",
"title": "Transaction Types"
},
"min_value_krw": {
"type": "number",
"minimum": 0,
"description": "Drop trades worth less than this many KRW.",
"title": "Min Value Krw"
},
"acquisition_method": {
"type": "string",
"description": "Filter to one acquisition_method (e.g. 'μ₯λ΄λ§€μ' for open-market buys). Useful for excluding stock-dividend (μ£Όμλ°°λΉ) bookings.",
"title": "Acquisition Method"
},
"position_category": {
"type": "string",
"description": "Filter to a position bucket. One of: CEO, CFO, COO, CTO, Chairman, Co-CEO, President, Vice Chairman.",
"title": "Position Category"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
},
"sector": {
"type": "string",
"description": "Industry sector (e.g. 'Semiconductors').",
"title": "Sector"
}
}
}π’list_top_buys_kr(days, limit, high_signal_only, acquisition_method, min_value_krw, ...)
Top KR tickers by aggregated insider buying over a window
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 20,
"title": "Limit"
},
"high_signal_only": {
"type": "boolean",
"description": "Default true β restrict to Tier-1 open-market buys (μ₯λ΄λ§€μ) and drop program trades, matching the dashboard's High Signal view. Pass false to include stock-dividend bookings, option exercises, etc.",
"default": true,
"title": "High Signal Only"
},
"acquisition_method": {
"type": "string",
"description": "Override the high-signal filter with a specific acquisition_method (e.g. 'μ₯λ΄λ§€μ', 'μ£Όμλ°°λΉ').",
"title": "Acquisition Method"
},
"min_value_krw": {
"type": "number",
"minimum": 0,
"description": "Drop source trades worth less than this many KRW.",
"title": "Min Value Krw"
},
"min_insider_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Drop tickers with fewer than this many distinct insiders.",
"default": 1,
"title": "Min Insider Count"
},
"position_category": {
"type": "string",
"description": "Filter to a position bucket. One of: CEO, CFO, COO, CTO, Chairman, Co-CEO, President, Vice Chairman.",
"title": "Position Category"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
},
"sector": {
"type": "string",
"description": "Industry sector.",
"title": "Sector"
}
}
}π’list_top_sells_kr(days, limit, high_signal_only, acquisition_method, min_value_krw, ...)
Top KR tickers by aggregated insider selling over a window
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 20,
"title": "Limit"
},
"high_signal_only": {
"type": "boolean",
"description": "Default true β restrict to Tier-1 open-market sells (μ₯λ΄λ§€λ) and drop program trades. Pass false to include all sell types.",
"default": true,
"title": "High Signal Only"
},
"acquisition_method": {
"type": "string",
"description": "Override the high-signal filter with a specific acquisition_method.",
"title": "Acquisition Method"
},
"min_value_krw": {
"type": "number",
"minimum": 0,
"description": "Drop source trades worth less than this many KRW.",
"title": "Min Value Krw"
},
"min_insider_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Drop tickers with fewer than this many distinct insiders.",
"default": 1,
"title": "Min Insider Count"
},
"position_category": {
"type": "string",
"description": "Filter to a position bucket. One of: CEO, CFO, COO, CTO, Chairman, Co-CEO, President, Vice Chairman.",
"title": "Position Category"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
},
"sector": {
"type": "string",
"description": "Industry sector.",
"title": "Sector"
}
}
}π’list_opportunities_kr(period_days, max_return_pct, min_value_krw, exclude_asset_mgrs, limit)
Recent KR open-market BUYs whose price hasn't moved much yet
Input Schema
{
"type": "object",
"properties": {
"period_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Period Days"
},
"max_return_pct": {
"type": "number",
"minimum": 0,
"description": "Drop trades whose price has already moved more than this many percent (positive or negative) since the filing.",
"default": 5,
"title": "Max Return Pct"
},
"min_value_krw": {
"type": "number",
"minimum": 0,
"description": "Drop trades smaller than this many KRW.",
"default": 100000000,
"title": "Min Value Krw"
},
"exclude_asset_mgrs": {
"type": "boolean",
"description": "Drop institutional rows (μμ°μ΄μ©/ν¬μμ ν/μ°κΈ).",
"default": true,
"title": "Exclude Asset Mgrs"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
}
}
}π’list_plans_kr(days, stock_code, is_withdrawal, is_amendment, limit, ...)
KR pre-disclosure (D005) plans β announced but not yet executed trades
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 9999,
"minimum": 1,
"default": 90,
"title": "Days"
},
"stock_code": {
"type": "string",
"title": "Stock Code"
},
"is_withdrawal": {
"type": "boolean",
"description": "Filter to withdrawn (or non-withdrawn) plans.",
"title": "Is Withdrawal"
},
"is_amendment": {
"type": "boolean",
"description": "Filter to amendment (or original) filings.",
"title": "Is Amendment"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number.",
"default": 0,
"title": "Page"
}
}
}π’get_plan_executions_kr(rcept_no)
Cross-reference one D005 plan against its actual executions
Input Schema
{
"type": "object",
"properties": {
"rcept_no": {
"type": "string",
"title": "Rcept No"
}
},
"required": [
"rcept_no"
]
}π’search_companies_kr(q, limit, offset)
Search KR companies by stock_code, Korean name, or English name
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Search term β matches stock_code prefix, company_name (Korean) substring, or company_name_en substring. Omit to list all companies by trade volume.",
"title": "Q"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 25,
"title": "Limit"
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0,
"title": "Offset"
}
}
}π’list_leaderboard_kr(min_buys, exclude_asset_mgrs, limit)
Top KR insiders by historical avg return on their buys
Input Schema
{
"type": "object",
"properties": {
"min_buys": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Minimum lifetime purchase count to appear.",
"default": 3,
"title": "Min Buys"
},
"exclude_asset_mgrs": {
"type": "boolean",
"description": "Drop institutional rows (μμ°μ΄μ©/ν¬μμ ν/μ°κΈ).",
"default": true,
"title": "Exclude Asset Mgrs"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"default": 100,
"title": "Limit"
}
}
}π’list_insider_filings_jp(stock_code, days, limit, page, transaction_types, ...)
Shareholding-report filings for one JP ticker
Input Schema
{
"type": "object",
"properties": {
"stock_code": {
"type": "string",
"title": "Stock Code"
},
"days": {
"type": "integer",
"maximum": 9999,
"minimum": 1,
"default": 365,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number.",
"default": 0,
"title": "Page"
},
"transaction_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to specific transaction types (e.g. ['BUY']).",
"title": "Transaction Types"
},
"min_value_jpy": {
"type": "number",
"minimum": 0,
"description": "Drop filings worth less than this many JPY.",
"title": "Min Value Jpy"
},
"purpose_category": {
"type": "string",
"description": "Filter to one purpose_category (e.g. 'activist', 'passive').",
"title": "Purpose Category"
}
},
"required": [
"stock_code"
]
}π’get_insider_summary_jp(stock_code)
Pre-aggregated shareholding summary for one JP ticker
Input Schema
{
"type": "object",
"properties": {
"stock_code": {
"type": "string",
"title": "Stock Code"
}
},
"required": [
"stock_code"
]
}π’list_recent_filings_jp(days, purpose_category, limit, page, transaction_types, ...)
Recent JP filings across all tickers
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Days"
},
"purpose_category": {
"type": "string",
"title": "Purpose Category"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number.",
"default": 0,
"title": "Page"
},
"transaction_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to specific transaction types (e.g. ['BUY']).",
"title": "Transaction Types"
},
"min_value_jpy": {
"type": "number",
"minimum": 0,
"description": "Drop filings worth less than this many JPY.",
"title": "Min Value Jpy"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
}
}
}π’list_top_buys_jp(days, limit, high_signal_only, purpose_category, min_value_jpy, ...)
Top JP tickers by aggregated insider buying over a window
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 20,
"title": "Limit"
},
"high_signal_only": {
"type": "boolean",
"description": "Default true β drop correction/amendment filings (paperwork).",
"default": true,
"title": "High Signal Only"
},
"purpose_category": {
"type": "string",
"description": "Filter source filings to one purpose_category (e.g. 'activist').",
"title": "Purpose Category"
},
"min_value_jpy": {
"type": "number",
"minimum": 0,
"description": "Drop source filings worth less than this many JPY.",
"title": "Min Value Jpy"
},
"min_investor_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Drop tickers with fewer than this many distinct investors.",
"default": 1,
"title": "Min Investor Count"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
}
}
}π’list_top_sells_jp(days, limit, high_signal_only, purpose_category, min_value_jpy, ...)
Top JP tickers by aggregated insider selling over a window
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Days"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 20,
"title": "Limit"
},
"high_signal_only": {
"type": "boolean",
"description": "Default true β drop correction/amendment filings (paperwork).",
"default": true,
"title": "High Signal Only"
},
"purpose_category": {
"type": "string",
"description": "Filter source filings to one purpose_category.",
"title": "Purpose Category"
},
"min_value_jpy": {
"type": "number",
"minimum": 0,
"description": "Drop source filings worth less than this many JPY.",
"title": "Min Value Jpy"
},
"min_investor_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Drop tickers with fewer than this many distinct investors.",
"default": 1,
"title": "Min Investor Count"
},
"market_cap": {
"type": "string",
"description": "Market-cap bucket. One of: mega, large, mid, small, micro.",
"title": "Market Cap"
}
}
}π’list_investor_filings_jp(filer_edinet_code, limit)
All JP filings made by one investor (EDINET code)
Input Schema
{
"type": "object",
"properties": {
"filer_edinet_code": {
"type": "string",
"title": "Filer Edinet Code"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
}
},
"required": [
"filer_edinet_code"
]
}π’list_opportunities_jp(period_days, max_return_pct, min_value_jpy, exclude_passive, limit)
Recent JP BUY/INITIAL filings whose price hasn't moved much yet
Input Schema
{
"type": "object",
"properties": {
"period_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"default": 30,
"title": "Period Days"
},
"max_return_pct": {
"type": "number",
"minimum": 0,
"description": "Drop filings whose price has already moved more than this many percent (positive or negative) since the filing.",
"default": 5,
"title": "Max Return Pct"
},
"min_value_jpy": {
"type": "number",
"minimum": 0,
"description": "Drop filings smaller than this many JPY.",
"default": 100000000,
"title": "Min Value Jpy"
},
"exclude_passive": {
"type": "boolean",
"description": "Drop filings with purpose_category='passive'.",
"default": true,
"title": "Exclude Passive"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"default": 200,
"title": "Limit"
}
}
}π’list_leaderboard_jp(min_buys, limit)
Top JP investors by star rating + avg return
Input Schema
{
"type": "object",
"properties": {
"min_buys": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Minimum lifetime purchase count to appear.",
"default": 3,
"title": "Min Buys"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"default": 100,
"title": "Limit"
}
}
}π’list_convergence_jp(min_investors, limit)
JP tickers with multiple distinct investors filing on the same name
Input Schema
{
"type": "object",
"properties": {
"min_investors": {
"type": "integer",
"maximum": 100,
"minimum": 2,
"description": "Minimum distinct investors per ticker.",
"default": 3,
"title": "Min Investors"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 20,
"title": "Limit"
}
}
}π’search_companies_jp(q, limit, offset)
Search JP companies by stock_code, Japanese name, or English name
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Search term β matches stock_code prefix, company_name (Japanese) substring, or company_name_en substring. Omit to list all companies by filing volume.",
"title": "Q"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 25,
"title": "Limit"
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0,
"title": "Offset"
}
}
}π’search_investors_us(query, limit)
Fuzzy-search investors by name; resolves to CIKs ordered by AUM Case-insensitive partial-name match against the latest-holdings view. Returns the largest funds first so the most likely match is at the top. Use this to resolve a manager name to a CIK before calling investor-axis tools (`get_investor_holdings_us`, `list_investor_periods_us`, `get_investor_changes_us`).
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"description": "Partial manager name (case-insensitive)",
"title": "Query"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"default": 10,
"title": "Limit"
}
},
"required": [
"query"
]
}βͺscreen_investor_sector_exposure_us(sector, tier, period, min_total_value_usd, min_positions, ...)
Screen investors by sector concentration (e.g. top biotech specialists) Ranks 13F filers by the share of their portfolio in one sector, computed from sector-tagged top-50 holdings. `tier` buckets: specialist (>=60%), heavy (30-60%), tilted (10-30%), minimal (<10%). Interpretation caveats: corporate venture arms (Gilead, Pfizer, GSK) and single-stock endowments (e.g. Lilly Endowment holds only LLY) rank as specialists β pass `min_positions` (e.g. 5) to screen for genuinely diversified sector pickers. Chain with `get_investor_holdings_us` / `get_investor_changes_us` to see what a specialist is buying now.
Input Schema
{
"type": "object",
"properties": {
"sector": {
"type": "string",
"description": "Sector to rank by: 'biotech' (biotech + pharma industries, the fast path) or a sector name like 'Healthcare', 'Technology', 'Energy'.",
"default": "biotech",
"title": "Sector"
},
"tier": {
"type": "string",
"description": "Only funds in this tier: specialist | heavy | tilted | minimal.",
"title": "Tier"
},
"period": {
"type": "string",
"description": "Reporting period: '2026-06-30' or '2026-Q2'. Defaults to latest.",
"title": "Period"
},
"min_total_value_usd": {
"type": "number",
"minimum": 0,
"description": "Only funds with total portfolio value β₯ this many USD.",
"title": "Min Total Value Usd"
},
"min_positions": {
"type": "integer",
"minimum": 1,
"description": "Only funds with at least this many positions in the sector.",
"title": "Min Positions"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 25,
"title": "Limit"
}
}
}βͺscreen_investor_catalyst_record_us(sector, min_events, min_hit_rate, min_impact_usd, order_by, ...)
Screen funds by their track record on binary events (any sector) Ranks 13F filers by how their positions resolved through binary events β single-day moves >= ~25%, price-defined, NOT verified cause labels. In biotech these are trial readouts / FDA decisions / buyouts; elsewhere earnings blowups, guidance cuts, M&A. `sector='all'` (default) ranks across everything; `'biotech'` and lowercased sector names ('technology', 'energy', ...) scope the record. `hit_rate` = pops held / events decided; `impact_usd` is dollar-weighted (position value x event return). Always pass `min_events` (>= 5) β a perfect rate on 2 events is noise. Chain with `get_investor_holdings_us` to see what a proven event-caller is buying now, or `screen_investor_sector_exposure_us` to intersect with sector specialists.
Input Schema
{
"type": "object",
"properties": {
"sector": {
"type": "string",
"description": "Sector bucket: 'all' (rollup), 'biotech', or a lowercased sector name like 'technology' or 'energy'.",
"default": "all",
"title": "Sector"
},
"min_events": {
"type": "integer",
"minimum": 1,
"description": "Only funds exposed to at least this many events (use >= 5).",
"default": 5,
"title": "Min Events"
},
"min_hit_rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Only funds with hit_rate >= this percent.",
"title": "Min Hit Rate"
},
"min_impact_usd": {
"type": "number",
"description": "Only funds with dollar-weighted impact >= this many USD.",
"title": "Min Impact Usd"
},
"order_by": {
"type": "string",
"description": "Ranking column: impact_usd (default) | hit_rate | events.",
"default": "impact_usd",
"title": "Order By"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"default": 25,
"title": "Limit"
}
}
}π’get_investor_holdings_us(cik, period, top_n, tickers, min_position_value_usd)
Latest 13F holdings for one investor (or for a specific period)
Input Schema
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"title": "Cik"
},
"period": {
"type": "string",
"description": "Reporting period: '2026-Q2' or '2026-06-30'.",
"title": "Period"
},
"top_n": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Return only the top-N positions by USD value (slims a 50-position payload).",
"title": "Top N"
},
"tickers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only return positions matching these tickers; overrides top_n.",
"title": "Tickers"
},
"min_position_value_usd": {
"type": "number",
"minimum": 0,
"description": "Drop positions worth less than this many USD.",
"title": "Min Position Value Usd"
}
},
"required": [
"cik"
]
}π’list_investor_periods_us(cik, limit, top_n)
All 13F periods on file for one investor
Input Schema
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"title": "Cik"
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"default": 12,
"title": "Limit"
},
"top_n": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Return only the top-N positions per period (defaults to all 50).",
"title": "Top N"
}
},
"required": [
"cik"
]
}π’get_investor_changes_us(cik, period_to, period_from)
QoQ position diff for one investor between two periods
Input Schema
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"title": "Cik"
},
"period_to": {
"type": "string",
"description": "Newer period: '2026-Q2' or '2026-06-30'.",
"title": "Period To"
},
"period_from": {
"type": "string",
"description": "Older period ('2026-Q1' or '2026-03-31'); defaults to the prior period on file.",
"title": "Period From"
}
},
"required": [
"cik",
"period_to"
]
}π’get_investor_sector_exposure_us(cik, period, limit)
Sector-exposure history for one investor (newest quarter first) Per-quarter portfolio composition by sector for one 13F filer, including the biotech tier and top biotech positions. Use it to see whether a fund was already a sector specialist in earlier quarters, or how its sector mix is shifting. `unclassified_pct` reports how much top-50 value had no sector tag.
Input Schema
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"title": "Cik"
},
"period": {
"type": "string",
"description": "One reporting period: '2026-06-30' or '2026-Q2'. Default: all on file.",
"title": "Period"
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"default": 12,
"title": "Limit"
}
},
"required": [
"cik"
]
}π’get_investor_catalyst_record_us(cik, sector)
One fund's binary-event track record per sector, with best/worst calls The fund's record of holding names through binary events (price-defined single-day moves β readouts/FDA/buyouts in biotech, earnings/M&A elsewhere; not verified cause labels): one row per sector bucket, the 'all' rollup first, each with hits, blowups, hit rate, dollar-weighted impact, and the five best and worst resolved calls. 404 means the fund had no scored events in the window, not that it is a bad fund.
Input Schema
{
"type": "object",
"properties": {
"cik": {
"type": "string",
"title": "Cik"
},
"sector": {
"type": "string",
"description": "Only this sector bucket (e.g. 'biotech'); default all buckets.",
"title": "Sector"
}
},
"required": [
"cik"
]
}π’list_ticker_holders_us(ticker, period, limit, ratings, min_total_value_usd, ...)
Investors with `ticker` in their top-50 positions, sorted by position size Returns 13F filers that hold `ticker` **as one of their 50 largest positions**, scoped to the most recent reporting period by default. Only top-50 positions per investor are surfaced β smaller positions are not included. Pass an explicit `period` to query a different quarter.
Input Schema
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"title": "Ticker"
},
"period": {
"type": "string",
"description": "Reporting period: '2026-Q2' or '2026-06-30'.",
"title": "Period"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"default": 25,
"title": "Limit"
},
"ratings": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to specific fund ratings (e.g. ['3','4','5'] for 3-star and above). Use this to avoid pulling 200 funds when you only want a rating slice.",
"title": "Ratings"
},
"min_total_value_usd": {
"type": "number",
"minimum": 0,
"description": "Only funds with total AUM β₯ this many USD.",
"title": "Min Total Value Usd"
},
"min_position_value_usd": {
"type": "number",
"minimum": 0,
"description": "Only funds whose position in this ticker is β₯ this many USD.",
"title": "Min Position Value Usd"
}
},
"required": [
"ticker"
]
}π’get_kpi(ticker)
Latest normalized KPI snapshot for one ticker
Input Schema
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"title": "Ticker"
}
},
"required": [
"ticker"
]
}βͺscreen_insiders(date_from, date_to, transaction_types, min_value, max_value, ...)
Screen insider activity by country, date, value, role, and ticker Screens one market per call, selected by `country`: 'KR' returns individual insider transactions, 'JP' returns 5%+ shareholding reports. The response echoes `country` β switch on it before reading `results`, since the two markets return different record shapes. There is no US coverage; use the 13F screen for US institutional flows.
Input Schema
{
"type": "object",
"properties": {
"date_from": {
"type": "string",
"title": "Date From"
},
"date_to": {
"type": "string",
"title": "Date To"
},
"transaction_types": {
"items": {
"type": "string"
},
"type": "array",
"title": "Transaction Types"
},
"min_value": {
"type": "number",
"title": "Min Value"
},
"max_value": {
"type": "number",
"title": "Max Value"
},
"actor_role": {
"type": "string",
"title": "Actor Role"
},
"stock_codes": {
"items": {
"type": "string"
},
"type": "array",
"title": "Stock Codes"
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"title": "Limit",
"default": 200
},
"country": {
"type": "string",
"title": "Country",
"description": "Market to screen: 'KR' (Korea) or 'JP' (Japan)."
}
},
"required": [
"country"
]
}βͺscreen_holdings_us(period, tickers, min_value_usd, max_value_usd, ratings, ...)
Screen 13F holdings by period, ticker, value, and rating; returns each matched fund with only the position(s) that matched Results are wrapped in an envelope: `results` holds up to `limit` funds (max 500), `total_count` is the full server-side match count, and `truncated` says whether paging with `offset` would surface more. `period` accepts '2026-Q2' or an ISO date like '2026-06-30'.
Input Schema
{
"type": "object",
"properties": {
"period": {
"type": "string",
"title": "Period",
"description": "Reporting period: '2026-Q2' or an ISO date like '2026-06-30'."
},
"tickers": {
"items": {
"type": "string"
},
"type": "array",
"title": "Tickers"
},
"min_value_usd": {
"type": "number",
"title": "Min Value Usd"
},
"max_value_usd": {
"type": "number",
"title": "Max Value Usd"
},
"ratings": {
"items": {
"type": "string"
},
"type": "array",
"title": "Ratings"
},
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"title": "Limit",
"default": 100
},
"offset": {
"type": "integer",
"minimum": 0,
"title": "Offset",
"description": "Rows to skip, for paging past `limit` (see `truncated`).",
"default": 0
}
}
}Community
Evidence