idx-cli/web/src/content/docs/mcp/tools.md
hermes 29f143fa1b feat: foreign flow (idx stocks flow, get_foreign_flow)
`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
2026-10-18 05:39:12 +00:00

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.