Skip to content

Taiwan Market Open Data (Unofficial)

by taux-io · remote · no sign-in to list tools · v0.15.0 · published by GitHub user taux-io

Unofficial. TWSE & TAIFEX open data for AI: stock, ETF & futures snapshots, quotes, 270+ datasets.

Changes · 4

10 tools: 4 change things and 6 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http twse https://twse-mcp.taux.io/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "dataset.get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "dataset.get" says "get": a word for reading.

    What this check looks for
  • The server marks "snapshot.etf" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "snapshot.etf" says "snapshot": a word for reading.

    What this check looks for
  • The server marks "snapshot.stock" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "snapshot.stock" says "snapshot": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Changes things 4Claude Code: ask
  • dataset.getFetch rows from a TWSE OpenAPI or TAIFEX OAS dataset.1 finding

    Why it is in this group

    • The name "dataset.get" says "get": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dataset.get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "dataset.get" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Fetch rows from a TWSE OpenAPI or TAIFEX OAS dataset. Find the dataset_id with dataset.search first; do not guess it, since each metric lives in its own table. Supports server-side filtering (code is an exact match; match and where), sorting, field selection and paging: 30 rows by default, 200 at most. For rankings and screens (top 10 by dividend yield, P/E below 10) use where and sort_by instead of paging through rows. Most daily tables hold the previous trading day's after-close data, not live prices; the response note states the period. Data is republished under Taiwan's Open Government Data License. 取得證交所或期交所資料集內容,支援伺服器端過濾、欄位投影與分頁。上游每個資料集都是整份回傳(可能上萬筆),這支工具預設只回前 30 筆(上限 200);用 code/match/where/fields 縮小到需要的範圍。排名與篩選(殖利率最高的前 20 檔、本益比低於 10 的股票)用 where + sort_by,不要自己翻頁比大小。漲幅榜、跌幅榜與漲停家數用 snapshot.movers:日成交資訊沒有漲跌幅%,依漲跌額排會讓高價股永遠排前面。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Get dataset rows
  • quote.realtimeIntraday quotes, refreshed about every 5 seconds, for up to 50 TWSE-listed (market="tse") or OTC (market="otc") codes; each quote carries the trading date it belongs to.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Intraday quotes, refreshed about every 5 seconds, for up to 50 TWSE-listed (market="tse") or OTC (market="otc") codes; each quote carries the trading date it belongs to. Source: the TWSE Market Information System (mis.twse.com.tw), which is not covered by the Open Government Data License. 取得盤中即時報價(約 5 秒更新一次),每筆帶 date(報價所屬交易日)。OpenAPI 只有前一交易日資料,要當下的價格得走基本市況報導站。ETF 與上市股票用 market="tse",上櫃用 "otc"。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Real-time quote
  • snapshot.etfOne TWSE-listed ETF in a single call: fund profile, the previous trading day's price and volume, and regular-savings (定期定額) popularity.1 finding

    Why it is in this group

    • The name "snapshot.etf" says "snapshot": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "snapshot.etf" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "snapshot.etf" says "snapshot": a word for reading.

      What this check looks for
    Description, as the server wrote it
    One TWSE-listed ETF in a single call: fund profile, the previous trading day's price and volume, and regular-savings (定期定額) popularity. Source: TWSE OpenAPI, updated after each trading day; not live. A section that cannot be fetched comes back null with a caveat. 一次取得單一上市 ETF 的完整概況:基本資料 + 前一交易日價量 + 定期定額熱度。價量為前一交易日,不是盤中即時;要當下價格請用 quote.realtime。合併三個證交所資料集並行查詢。任何一段查不到都會標成 null 並記在 caveats,不會整個失敗。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: ETF snapshot
  • snapshot.stockOne TWSE-listed company in a single call: profile, the previous trading day's price and volume, P/E, dividend yield, P/B, latest monthly revenue, dividends and upcoming ex-dividend…1 finding

    Why it is in this group

    • The name "snapshot.stock" says "snapshot": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "snapshot.stock" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "snapshot.stock" says "snapshot": a word for reading.

      What this check looks for
    Description, as the server wrote it
    One TWSE-listed company in a single call: profile, the previous trading day's price and volume, P/E, dividend yield, P/B, latest monthly revenue, dividends and upcoming ex-dividend dates, attention/disposition status, and market cap. Optional sections: financial statements (include_financials; year-to-date cumulative figures), corporate governance (include_governance), margin trading and securities lending (include_margin), ESG disclosures (esg_topics). To compare 2–5 companies side by side (price, P/E, dividend yield, P/B, market cap), pass codes instead of code. For recent history (daily closes and volume, the period change, plus daily P/E, dividend yield, P/B and margin/short balances; this service archives prices since 2026-09-29 and P/E and margin figures since 2026-10-20, null before that), pass history_days. Source: TWSE OpenAPI; daily tables are previous-trading-day, revenue monthly, financials quarterly; not live. 一次取得單一上市公司的完整概況:基本資料、前一交易日價量、本益比/殖利率/股價淨值比、最新月營收(含月增率與年增率)、近一年各期股利與近期除權除息預告、是否為注意股或處置股,以及市值。合併八個證交所資料集。價量為前一交易日,不是盤中即時;要當下價格請用 quote.realtime。要財報(損益、資產負債、毛利率等,會自動找對業別的表)帶 include_financials;要公司治理(董事長兼任總經理、董監質押、裁罰、董監持股不足)帶 include_governance。要融資融券餘額、券資比與可借券賣出股數帶 include_margin。要 ESG 帶 esg_topics(主題名稱陣列,最多 6 個);只說「ESG」時用溫室氣體排放、能源管理、董事會、人力發展。要並排比較 2–5 家(價量、本益比、殖利率、股價淨值比、市值)時,改帶 codes 而不是 code。要最近幾個交易日的走勢(每日收盤價量、每日本益比/殖利率/股價淨值比與融資融券餘額、期間漲跌幅;本服務自 2026-09-29 起存檔價量,本益比與融資融券自 2026-10-20 起)帶 history_days。ETF 請用 snapshot.etf。任何一段查不到都會標成 null 並記在 caveats,不會整個失敗。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Stock snapshot
Only reads 6Claude Code: allow
  • dataset.describeShow one dataset's definition: id, source (TWSE or TAIFEX), summary, tags, and every field key with its Chinese description.No findings

    Why it is in this group

    • The name "dataset.describe" says "describe": a word for reading.
    Description, as the server wrote it
    Show one dataset's definition: id, source (TWSE or TAIFEX), summary, tags, and every field key with its Chinese description. The where, sort_by, fields and match parameters of dataset.get take these field keys. Reads the local catalog only, so it has no row counts or dates. 查看某個資料集的定義:代號、來源(證交所或期交所)、中文說明、分類標籤,以及每個欄位的鍵名與中文說明。dataset.get 的 where、sort_by、fields、match 都要用這裡的鍵名(例如 PEratio),不是中文說明。只讀本機目錄、不抓上游,所以不含資料筆數或最新日期。代號不存在時回 error,請先用 dataset.search 找。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Describe dataset
  • dataset.searchSearch the catalog of Taiwan Stock Exchange (TWSE) OpenAPI and Taiwan Futures Exchange (TAIFEX) OAS datasets and get the dataset_id to fetch.No findings

    Why it is in this group

    • The name "dataset.search" says "search": a word for reading.
    Description, as the server wrote it
    Search the catalog of Taiwan Stock Exchange (TWSE) OpenAPI and Taiwan Futures Exchange (TAIFEX) OAS datasets and get the dataset_id to fetch. Reads a local catalog (no upstream call). Keywords may be Chinese or English, separated by spaces; every keyword must match. 搜尋臺灣證交所與期交所 OpenAPI 有哪些資料集可用。取資料前先用這個找 dataset_id。範圍比股票廣:還有公司治理、ESG、財報、權證、券商、期貨與選擇權,以及期交所的每日外幣參考匯率——覺得「交易所大概沒有這種資料」時,先搜再下結論。會比對資料集代號、中文說明與欄位名稱;多個關鍵字用空白分隔(每個都要命中),結果依相關度排序。期交所的資料集代號一律以 taifex/ 開頭,搜期貨與選擇權可用 tag="期貨與選擇權"。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • title: Search datasets
  • quote.lookupFind the code of a TWSE-listed company or fund (including ETFs) from its name or code, e.g.No findings

    Why it is in this group

    • The name "quote.lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    Find the code of a TWSE-listed company or fund (including ETFs) from its name or code, e.g. 台積電 → 2330. Use it first when the user gives only a name. English matching covers the exchange's English short names (TSMC, UMC, MediaTek) and fund English names, not full company names; if an English name finds nothing, try its short form or the Chinese name. Listed (TWSE) securities only. Source: TWSE OpenAPI. 用名稱或代號找上市公司與上市基金(含 ETF)的代號。使用者只講名稱(「台積電」「元大高股息」)時先用這個取得代號,不要憑印象猜代號。比對公司簡稱、全名、英文簡稱與代號,不分全半形與台/臺。只收上市標的;上櫃公司的名稱對照取不到。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Look up stock code
  • snapshot.futuresOne TAIFEX futures contract for the latest trading day: open, high, low, close, change, volume, settlement and open interest for each contract month (regular and after-hours sessio…No findings

    Why it is in this group

    • The name "snapshot.futures" says "snapshot": a word for reading.
    Description, as the server wrote it
    One TAIFEX futures contract for the latest trading day: open, high, low, close, change, volume, settlement and open interest for each contract month (regular and after-hours sessions), a near-month summary, institutional and large-trader positions, and final settlement prices. Accepts codes ("TX", "MTX") or Chinese names; an ambiguous name returns candidates only. Source: TAIFEX OAS; futures only; not live. 一個期貨契約(最新一個交易日)的完整概況:各月份的開高低收、漲跌、成交量、結算價、未平倉(一般與盤後時段)、近月摘要、三大法人部位(指數類期貨)、大額交易人部位與最後結算價。可用代號("TX"、"MTX"、"TMF"、"CDF")或名稱("台指期"、"小台"、"台積電期貨");名稱對到多個契約時只回 candidates,請向使用者確認再用代號重查。只含期貨;選擇權與整體期貨籌碼請用 dataset.search 或 snapshot.market。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Futures contract snapshot
  • snapshot.marketWhole-market overview for the previous trading day: TAIEX and its change, turnover, advancers and decliners, top 10 by volume, plus futures positioning (institutional net open inte…No findings

    Why it is in this group

    • The name "snapshot.market" says "snapshot": a word for reading.
    Description, as the server wrote it
    Whole-market overview for the previous trading day: TAIEX and its change, turnover, advancers and decliners, top 10 by volume, plus futures positioning (institutional net open interest, TAIEX futures positions, put/call ratio, large traders). scope="events" lists ex-dividend dates and shareholder meetings in the next two weeks and attention/disposition stocks. Every scope also includes a trading calendar: whether the market is open today and the next trading day (TWSE holiday schedule). Sources: TWSE OpenAPI and TAIFEX OAS; not live. 一次看完整體市場(前一交易日):加權指數與漲跌、成交金額、上市股票漲跌家數、成交量前十名;以及期貨籌碼:三大法人期貨未平倉淨部位、台指期各法人部位、Put/Call 比、台指期大額交易人淨部位。只要其中一邊時用 scope="stock" 或 "futures"。scope="events" 另外列出全市場的近期事件:兩週內的除權除息與股東會、今天公布的注意股、處置中與即將處置的股票(皆為上市);每個 scope 都附交易日曆:今天有沒有開盤、下一個交易日(證交所休市日表)。只問某一檔股票的除息、注意或處置狀態時,用 snapshot.stock。不含個別契約的行情價格;要查台指期、小台、個股期貨等單一期貨契約的收盤價與部位,用 snapshot.futures。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Market overview
  • snapshot.moversTop gainers and losers by percentage change among TWSE-listed stocks for the previous trading day, plus how many closed limit-up and limit-down.No findings

    Why it is in this group

    • The name "snapshot.movers" says "snapshot": a word for reading.
    Description, as the server wrote it
    Top gainers and losers by percentage change among TWSE-listed stocks for the previous trading day, plus how many closed limit-up and limit-down. Each row has the code, name, close, change, percentage change and volume. Use it for "top gainers / top losers / which stocks hit the daily limit" instead of sorting dataset.get by price change, which ranks by absolute points and puts high-priced stocks first. Limit-up and limit-down are derived from the previous close and the tick size (the data carries no flag). Listed stocks only (4-digit codes, no ETFs or warrants); OTC (TPEx) is not covered. Source: TWSE OpenAPI; not live. 上市股票前一交易日的漲幅與跌幅排行(依漲跌幅%,不是依漲跌額),以及漲停、跌停家數。問「漲幅榜」「跌幅榜」「今天漲停幾檔」時用這個,不要用 dataset.get 依漲跌排序——那會依點數排,股價高的永遠排前面。漲停與跌停是依前收盤與升降單位推算(資料本身沒有標記)。範圍是上市股票(四碼代號,不含 ETF 與權證),不含上櫃。資料為前一交易日,不是盤中即時;要當下價格請用 quote.realtime。

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • title: Top gainers and losers

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.15.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http twse https://twse-mcp.taux.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__twse__dataset_search",
      "mcp__twse__dataset_describe",
      "mcp__twse__quote_lookup",
      "mcp__twse__snapshot_market",
      "mcp__twse__snapshot_movers",
      "mcp__twse__snapshot_futures"
    ],
    "ask": [
      "mcp__twse__dataset_get",
      "mcp__twse__snapshot_etf",
      "mcp__twse__snapshot_stock",
      "mcp__twse__quote_realtime"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as twse. Review it before you use it.