`idx stocks flow SYMBOL` shows what foreign investors bought and sold of a stock, session by session, from IDX's own daily trading summary: foreign buy, sell and net volume, net value at the session's average price, and the share of value traded outside the regular board, with range totals. Latest 10 sessions by default (--days, at most 60) or --from/--to. The MCP server exposes it as get_foreign_flow. - api/idx: pure parser for GetStockSummary (rows dated another session are dropped) and a provider over curl-impersonate's profile fallback with a 30 s limit; Cloudflare passes only some fingerprints. - flow: each session is cached whole by date, so other stocks' flows for the same sessions need no request. Weekends are never requested. - Idx::idx_code is shared by broker and flow for the .JK-only check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V3syn2fN2LNo5pvTSqc6eh
8.5 KiB
| title | description |
|---|---|
| Tools | Every idx-mcp tool and its inputs, generated from the server's tool list. |
idx-mcp serves these tools. ownership_sync is listed only when the server
starts with --allow-sync. Results that come from a live provider are wrapped
as {data, source, fetched_at, stale}; failures return {error, code, message} with isError set.
analyze_bandar
Bandarmology for one or more IDX tickers from the broker summary: for the top 1, 3, 5 and 10 brokers per side, buy value minus sell value as basis points of value traded (imbalance_bps), with a signal from big_accumulation (>= +1500) through neutral (within +-500) to big_distribution (<= -1500), headlined by top (default 5). Reports come strongest accumulation first; tickers that fail are listed under failures. A heuristic over end-of-day broker codes: brokers trade for many clients, and both_sides lists brokers whose gross figures overstate their direction. method names the rules applied. investor must be all: the summary has no total for one investor side.
| Input | Type | Required | Description |
|---|---|---|---|
board |
all / regular / cash / negotiated |
no | Which board's trades to count (default "all"); "regular" leaves out negotiated block trades. |
date |
string | no | One session, YYYY-MM-DD. Omit date, from and to for the latest session with trades. |
from |
string | no | First session of a range, YYYY-MM-DD (at most 366 days). |
investor |
all / foreign / domestic |
no | Whose trades to count, by investor domicile (default "all"). |
symbols |
array of string | yes | IDX tickers, e.g. ["BBCA", "BBRI"]; the .JK suffix is optional. At most 20. |
to |
string | no | Last session of the range, YYYY-MM-DD (default today). |
top |
integer | no | Tier behind the headline signal: 1, 3, 5 or 10 brokers per side (default 5). |
analyze_stock
Analyze one IDX ticker: technical signals (trend, RSI, MACD, moving averages) and fundamental growth, valuation, and risk ratings. Analyses that fail are listed under errors; the call fails only if every analysis fails.
| Input | Type | Required | Description |
|---|---|---|---|
kinds |
array of technical / growth / valuation / risk |
no | Analyses to run (default: all). |
symbol |
string | yes | IDX ticker, e.g. "BBCA". |
compare_stocks
Compare fundamental reports (growth, valuation, risk) across IDX tickers. Tickers that fail are listed under failures.
| Input | Type | Required | Description |
|---|---|---|---|
symbols |
array of string | yes | IDX tickers, e.g. ["BBCA", "BBRI"]; the .JK suffix is optional. At most 20. |
get_broker_summary
Broker summary for one IDX ticker: the top 10 buyers and top 10 sellers by lots over a session or date range, each with lots (1 lot = 100 shares), value and average price in IDR, plus totals. Buyers and sellers are ranked separately and gross, so a broker can appear on both sides. End of day only (IDX hides broker codes during trading); kind is the broker's own status (local, foreign, state_owned), not its clients'. rounded = true means figures of a million and more carry one decimal of precision.
| Input | Type | Required | Description |
|---|---|---|---|
board |
all / regular / cash / negotiated |
no | Which board's trades to count (default "all"); "regular" leaves out negotiated block trades. |
date |
string | no | One session, YYYY-MM-DD. Omit date, from and to for the latest session with trades. |
from |
string | no | First session of a range, YYYY-MM-DD (at most 366 days). |
investor |
all / foreign / domestic |
no | Whose trades to count, by investor domicile (default "all"). |
symbol |
string | yes | IDX ticker, e.g. "BBCA". |
to |
string | no | Last session of the range, YYYY-MM-DD (default today). |
get_company
Company data for one IDX ticker: profile, financial statements, earnings, analyst sentiment, insights, and news. News items carry relevance: company (about this ticker) first, then market (general market news). Sections that fail are listed under errors; the call fails only if every section fails.
| Input | Type | Required | Description |
|---|---|---|---|
sections |
array of profile / financials / earnings / sentiment / insights / news |
no | Sections to fetch (default: all). |
symbol |
string | yes | IDX ticker, e.g. "BBCA". |
get_foreign_flow
Foreign investors' buying and selling of one IDX ticker, session by session (oldest first), from IDX's daily trading summary: foreign buy, sell and net volume in shares, foreign_net_value (net shares at the session's average price, an estimate, IDR), change_bps, and non_regular_bps (share of value traded outside the regular board). Totals cover the whole range; foreign_share_bps is foreign investors' share of trading. End of day.
| Input | Type | Required | Description |
|---|---|---|---|
days |
integer | no | Latest sessions (default 10, at most 60). Omit when giving from/to. |
from |
string | no | First session of a range, YYYY-MM-DD (at most 92 days). |
symbol |
string | yes | IDX ticker, e.g. "BBCA". |
to |
string | no | Last session of the range, YYYY-MM-DD (default today). |
get_investor_holdings
Every IDX holding (above 1%) of one investor, matched by name.
| Input | Type | Required | Description |
|---|---|---|---|
entity |
string | yes | Investor name or part of it, e.g. "DWIMURIA"; the closest match is used. |
get_ownership_changes
Holder changes (new, exited, increased, decreased) between two KSEI release dates, optionally for one ticker. Rows come largest change first, one page at a time: summary covers all of them (counts by type, tickers with the most changes), and next_offset is the offset for the next page, or null after the last.
| Input | Type | Required | Description |
|---|---|---|---|
from |
string | yes | Earlier release date, YYYY-MM-DD (see ownership_status). |
limit |
integer | no | Rows per page (default 200, at most 300); total reports the full count. |
offset |
integer | no | Rows to skip, for the next page: the previous response's next_offset. |
ticker |
string | no | Only this ticker's changes. |
to |
string | yes | Later release date, YYYY-MM-DD. |
get_price_history
OHLCV price history for one IDX ticker.
| Input | Type | Required | Description |
|---|---|---|---|
interval |
1d / 1wk / 1mo |
no | Candle size (default "1d"). |
period |
1d / 5d / 1mo / 3mo / 6mo / 1y / 2y / 5y |
no | Lookback window (default "3mo"). |
symbol |
string | yes | IDX ticker, e.g. "BBCA". |
get_quotes
Latest quotes (price, change, volume, 52-week range, market cap) for one or more IDX tickers.
| Input | Type | Required | Description |
|---|---|---|---|
symbols |
array of string | yes | IDX tickers, e.g. ["BBCA", "BBRI"]; the .JK suffix is optional. At most 20. |
get_shareholders
Shareholders above 1% of an IDX ticker from the latest KSEI release, with concentration metrics (top1, top3, HHI, free float).
| Input | Type | Required | Description |
|---|---|---|---|
ticker |
string | yes | IDX ticker, e.g. "BBCA". |
ownership_status
Ownership database status: whether it has data, and the imported KSEI release dates.
No inputs.
ownership_sync
Download or refresh the KSEI ownership snapshot (several MB) into the local database.
| Input | Type | Required | Description |
|---|---|---|---|
force |
boolean | no | Re-download even when the local snapshot is current. |
screen_stocks
Run a stock screen (top/worst performers, high dividend, low P/E, 52-week highs/lows, high volume, large cap).
| Input | Type | Required | Description |
|---|---|---|---|
filter |
top-performers / worst-performers / high-dividend / low-pe / 52w-high / 52w-low / high-volume / large-cap |
no | Screen to run (default "top-performers"). |
limit |
integer | no | Maximum results (default 50, at most 200). |
region |
id / us / sg / hk / jp |
no | Market region (default "id"). |
search_investors
Search investor names in the KSEI ownership database.
| Input | Type | Required | Description |
|---|---|---|---|
limit |
integer | no | Maximum results (default 20, at most 100). |
query |
string | yes | Full-text query over investor names. |