--- title: Tools description: 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. |