Taiwan Market Open Data (Unofficial)
Server Details
Unofficial. TWSE & TAIFEX open data for AI: stock, ETF & futures snapshots, quotes, 270+ datasets.
- Status
- Healthy
- Uptime
- 99.7% over 75 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- taux-io/twse-mcp
- GitHub Stars
- 0
- Server Listing
- TWSE OpenAPI MCP Server
TDQS
Scored across 10 tools
The tools have mostly distinct roles: catalog search/describe/fetch, symbol lookup, realtime quotes, and curated snapshots for stocks, ETFs, futures, market, and movers. The main overlap is that dataset.get is a generic raw-data escape hatch that can retrieve fields also surfaced by snapshot.* and quote.*, though descriptions give clear usage guidance.
All tool names follow a consistent namespace.action pattern: dataset.*, quote.*, and snapshot.*. There is no mixing of camelCase, snake_case, or vague verbs.
Ten tools is well-scoped for a market-data server covering discovery, raw dataset access, quotes, and curated snapshots. Each tool earns its place without obvious redundancy or bloat.
The surface covers catalog discovery, raw data retrieval, symbol lookup, realtime quotes, and snapshots for stocks, ETFs, futures, whole-market overview, and movers. Minor gaps remain around options chains, OTC fundamentals, and some specialized asset classes, but dataset.search/dataset.get provide a broad fallback.
Available Tools
10 toolsdataset.describeDescribe datasetARead-onlyIdempotentInspect
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 找。
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | 來自 dataset.search 的資料集代號,例如 "exchangeReport/STOCK_DAY_ALL"。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| tags | Yes | |
| fields | Yes | |
| source | Yes | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds useful context beyond annotations: it reads only the local catalog, has no upstream row counts or latest dates, and returns an error when the dataset_id does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English part is front-loaded and efficient, covering purpose, related parameters, scope, and error behavior in a few sentences. The description is doubled in Chinese, which is appropriate for a bilingual tool but reduces conciseness relative to a single-language equivalent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter fully documented by the schema, an output schema present, and rich annotations, the description supplies the remaining context an agent needs: what is returned, how the returned field keys are used by dataset.get, that the catalog is local-only, and that missing IDs should be resolved via dataset.search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single dataset_id parameter with its origin and an example. The description reinforces that fields are keyed by the identifiers returned here and refers back to dataset.search for valid IDs, but it does not add syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it shows one dataset's definition, including id, source, summary, tags, and field keys with Chinese descriptions. It distinguishes itself from siblings by noting that dataset.get's parameters use these field keys and that dataset.search should be used first when an id is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly routes the agent: use dataset.search to find a dataset_id if it does not exist, and it distinguishes this metadata-only read from dataset.get by explaining that the returned field keys feed dataset.get's where, sort_by, fields, and match parameters. It also notes that it reads only the local catalog and has no row counts or dates, which implies when not to use it for data access, but it does not explicitly state to use dataset.get for data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset.getGet dataset rowsARead-onlyIdempotentInspect
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:日成交資訊沒有漲跌幅%,依漲跌額排會讓高價股永遠排前面。
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | 證券/基金/契約代號,例如 "0050"、"TX"。一律精確比對(不分大小寫),實際用了哪個欄位會回在 code_field_used。找不到完全相符的代號時回 0 筆,並在 code_candidates 給出拼法相近的代號——**那些是候選不是答案**,可能是不同商品(MXF 與 MXFFX 是不同契約),請確認後改用該代號重查,不要直接引用它們的數字。 | |
| limit | No | 回傳筆數上限(硬上限 200)。 | |
| match | No | 其他欄位的子字串過濾,例如 {"基金類型": "ETF"}。最多 20 個欄位。 | |
| order | No | "desc"(大到小,預設)或 "asc"。 | desc |
| where | No | 數值條件,全部都要成立。例如本益比低於 10、殖利率至少 5%:[{"field":"PEratio","op":"lt","value":10},{"field":"DividendYield","op":"gte","value":5}]。欄位值會去逗號轉數字;空值或非數字(例如虧損公司的本益比)無法比較,會被排除並回報筆數。 | |
| fields | No | 只回傳這些欄位。 | |
| offset | No | 分頁位移。 | |
| sort_by | No | 依這個欄位排序,在分頁之前做——要「前 N 名」就用它配 limit。多數值是數字就依數值排,否則依字串排;空值與非數字一律排最後。 | |
| dataset_id | Yes | 資料集代號,例如 "exchangeReport/STOCK_DAY_ALL"。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| note | Yes | |
| offset | Yes | |
| source | Yes | |
| summary | Yes | |
| returned | Yes | |
| dataset_id | Yes | |
| rows_matched | Yes | |
| rows_in_source | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely new operational context: default 30 rows / hard cap 200, server-side filtering semantics, exact-match code with candidate fallback, and the caveat that most daily tables carry the previous trading day's after-close data rather than live prices. That data-freshness disclosure is not derivable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the dataset.search prerequisite, and every sentence carries instruction value. It loses a point because the entire guidance set is duplicated verbatim across English and Chinese, which inflates length for a reader that only needs one language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a 9-parameter nested schema, full schema coverage, rich annotations and an output schema, the definition supplies exactly the missing layer: freshness caveats, default/limit behavior, filtering strategy, and cross-tool routing. Nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: concrete filter examples (top-N by dividend yield, P/E below 10), the exact-match nature of code, and the warning that code_candidates are look-alikes (MXF vs MXFFX) rather than valid answers. It stops short of detailing every parameter, which is reasonable given the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch rows) and resource (TWSE OpenAPI / TAIFEX OAS dataset), and explicitly separates itself from the sibling dataset.search by telling the agent to resolve dataset_id there first. An agent can distinguish it from dataset.describe/search and the snapshot.* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not guidance: resolve dataset_id via dataset.search, don't guess because each metric is its own table; use where + sort_by for rankings/screens rather than paging; route gainers/losers/limit-up counts to snapshot.movers. Names the alternative tool where one exists, so routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset.searchSearch datasetsARead-onlyIdempotentInspect
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="期貨與選擇權"。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | 依分類過濾,例如 "證券交易"、"公司治理"、"財務報表"。 | |
| limit | No | 最多回傳幾筆(預設 25)。 | |
| query | No | 關鍵字,例如 "ETF"、"融資"、"三大法人 期貨"。留空列出全部。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| total_matched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world, non-destructive, so safety is covered. The description adds genuinely useful behavior beyond that: it reads a local catalog with no upstream call, matches against dataset codes, Chinese descriptions and column names, requires every space-separated keyword to match, and sorts by relevance. Only minor gaps (no note on result shape/pagination) remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the 'no upstream call' fact are front-loaded well, but the description is roughly doubled by a Chinese block that largely restates the English text, and its scope examples bloat it further. Much of the length is translation redundancy rather than additive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a search with an output schema present, so return values need not be described. Goal, invocation trigger, matching rules, filtering conventions, and the safe read-only nature are all covered, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: it explains keyword matching rules (Chinese or English, space-separated, all must match), the taifex/ code-prefix convention, and a concrete tag value ('期貨與選擇權') for futures/options filtering that the schema only gestures at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the catalog of TWSE OpenAPI and TAIFEX OAS datasets') and immediately frames the output purpose ('get the dataset_id to fetch'), which cleanly separates it from dataset.get and dataset.describe. An agent can tell exactly what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear workflow trigger ('取資料前先用這個找 dataset_id' / search before fetching) plus a strong heuristic: search before concluding the exchange lacks a dataset, listing the surprisingly broad categories covered. It stops short of naming the sibling tools (dataset.get / dataset.describe) explicitly as the next/alternative step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote.lookupLook up stock codeARead-onlyIdempotentInspect
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)的代號。使用者只講名稱(「台積電」「元大高股息」)時先用這個取得代號,不要憑印象猜代號。比對公司簡稱、全名、英文簡稱與代號,不分全半形與台/臺。只收上市標的;上櫃公司的名稱對照取不到。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 最多回傳幾筆(預設 10,上限 50)。 | |
| query | Yes | 名稱或代號,例如 "台積電"、"TSMC"、"高股息"、"2330"。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| source | Yes | |
| caveats | Yes | |
| results | Yes | |
| total_matched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description goes well beyond them: matching semantics (English short names and fund names only, not full legal names), normalization rules (全半形, 台/臺), coverage limits (TWSE listed only, no OTC), and the data source. That is exactly the extra behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, example, and the 'use first' rule before the caveats. The main cost is the fully bilingual duplication, where the Chinese text largely restates the English, making it longer than strictly necessary without adding new facts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers the non-obvious risks: partial English matching, missing full company names, and the OTC blind spot. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema with examples and the limit bounds (1–50, default 10). The description adds matching behavior around `query` but nothing about `limit`. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (find the code of a TWSE-listed company or fund from name or code), gives a concrete example (台積電 → 2330), and scopes it tightly to listed securities including ETFs. It is immediately distinguishable from sibling tools like quote.realtime or snapshot.etf, which return prices rather than identifiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it first when the user supplies only a name, and warns against guessing codes, plus a fallback path when an English name fails. It does not name a sibling alternative for the reverse case (code → data), so routing guidance is strong but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote.realtimeReal-time quoteARead-onlyIdempotentInspect
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"。
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | 代號清單,例如 ["0050", "0056", "2330"]。 | |
| market | No | "tse"(上市)或 "otc"(上櫃)。 | tse |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| units | Yes | |
| quotes | Yes | |
| source | Yes | |
| caveats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds non-annotation facts: the ~5-second refresh cadence, the MIS source, and that the source 'is not covered by the Open Government Data License', along with the per-quote trading date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded (what it returns, refresh cadence, scope) followed by the usage boundary and market mapping. The bilingual presentation duplicates parts of the English text in Chinese, which costs some efficiency, but every block still carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only quote tool with an output schema present, the description covers source, licensing, refresh cadence, item limits and market semantics. It omits auth requirements and error/empty-result behavior, which would round it out to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds semantic value beyond the schema by mapping the enum to real-world asset classes ('ETF 與上市股票用 market="tse",上櫃用 "otc"') and restating the 50-item cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Intraday quotes'), a precise scope ('up to 50 TWSE-listed (market="tse") or OTC (market="otc") codes'), and the real-time differentiator ('refreshed about every 5 seconds'). It does not name a sibling (e.g. quote.lookup) to contrast against, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'OpenAPI 只有前一交易日資料,要當下的價格得走基本市況報導站' gives a clear when-to-use condition (needing the current price) versus previous-day data, plus market selection guidance ('ETF 與上市股票用 market="tse",上櫃用 "otc"'). It stops short of naming an alternative sibling tool or stating exclusions explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot.etfETF snapshotARead-onlyIdempotentInspect
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,不會整個失敗。
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ETF 代號,例如 "0056"、"0050"、"00878"。 | |
| include_realtime | No | 是否附上盤中即時報價。預設 false,需要當下價格時才帶 true(多一次外呼)。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | |
| name | Yes | |
| quote | Yes | |
| is_etf | Yes | |
| source | Yes | |
| caveats | Yes | |
| derived | Yes | |
| profile | Yes | |
| realtime | Yes | |
| regular_savings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, yet the description adds substantial context beyond them: the data source (TWSE OpenAPI), the refresh cadence (after each trading day, not live), parallel fan-out across three datasets, and partial-failure semantics (a failed section is null plus a caveat, never a whole-call failure). That is exactly the operational detail an agent needs to interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome first, then source/caveat behavior, then the realtime alternative — good ordering. The only cost is that the full content is duplicated in English and Chinese, roughly doubling the token footprint for the same information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With readOnly annotations, a fully covered schema, and an output schema that already defines the return shape, the description covers everything remaining: freshness limits, degraded-result behavior, and the escape hatch to quote.realtime. An agent can call this correctly and interpret nulls without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'code' and 'include_realtime' are already documented in the schema, including the default and the extra outbound call cost. The description reinforces the realtime trade-off but adds no format or syntax detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: one TWSE-listed ETF in a single call, returning fund profile, prior-day price/volume, and regular-savings popularity. It explicitly distinguishes itself from the sibling quote.realtime by naming it as the tool to use for live prices, so the agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use (one-call overview of a listed ETF) and a clear when-not-to-use with the named alternative: '價量為前一交易日,不是盤中即時;要當下價格請用 quote.realtime.' The include_realtime flag is also framed as a conditional escalation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot.futuresFutures contract snapshotARead-onlyIdempotentInspect
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。
| Name | Required | Description | Default |
|---|---|---|---|
| contract | Yes | 期貨契約代號或名稱,例如 "TX"、"小台"、"台積電期貨"。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| name | Yes | |
| query | Yes | |
| quotes | No | |
| source | Yes | |
| caveats | Yes | |
| contract | Yes | |
| candidates | No | |
| near_month | No | |
| institutional | No | |
| large_traders | No | |
| final_settlement | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: data source (TAIFEX OAS), staleness ('not live', latest trading day), coverage of regular plus after-hours sessions, and the candidate-only response when a name is ambiguous. It does not discuss rate limits or failure modes for unknown codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned fields, then scope limits, then input handling, then alternatives – a sensible order. The main cost is full bilingual duplication, which roughly doubles the length for a single-language reader, though it serves a bilingual user base and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still names the key fields. Combined with source, freshness, session coverage, ambiguity handling and sibling routing, an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes beyond the schema by giving additional accepted codes ('TMF', 'CDF') not in the schema example, listing Chinese-name aliases, and specifying the semantic consequence of an ambiguous name (candidates only). That ambiguity behavior is real parameter semantics the schema does not encode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: one TAIFEX futures contract for the latest trading day, and enumerates the exact contents (OHLC, volume, settlement, open interest by contract month, sessions, near-month summary, institutional and large-trader positions). It explicitly bounds scope with 'futures only; not live', which cleanly separates it from snapshot.market, snapshot.stock and snapshot.etf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing for out-of-scope needs: '只含期貨;選擇權與整體期貨籌碼請用 dataset.search 或 snapshot.market'. It also defines the ambiguous-name path (return candidates, confirm with the user, re-query by code), which tells the agent how to behave on a failed lookup. It does not explicitly position itself against snapshot.stock/snapshot.etf beyond the word 'futures', so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot.marketMarket overviewARead-onlyIdempotentInspect
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。
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | "all"(預設,證券市場加期貨籌碼)、"stock"、"futures",或 "events"(近期事件行事曆)。 | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| source | Yes | |
| caveats | Yes | |
| 交易日曆 | No | |
| 期貨籌碼 | No | |
| 證券市場 | No | |
| 事件行事曆 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful behavioral context beyond them: data is not live, reflects the previous trading day, and is sourced from TWSE OpenAPI and TAIFEX OAS — freshness is a critical trait for a market snapshot and is not derivable from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and well organized, but the entire content is duplicated verbatim in Chinese and English, roughly doubling length without adding new information for a single reader. The scope-specific guidance is somewhat interleaved with the content inventory, making it longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and annotations carry the safety profile. Combined with the inventory of returned data, freshness caveat, source attribution, and sibling routing, an agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum values are already documented in the schema, so baseline is 3. The description goes further by explaining what each scope actually contains (events lists ex-dividend dates, shareholder meetings, attention/disposition stocks) and that the trading calendar is included in every scope, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: whole-market overview for the previous trading day, enumerating exactly what it returns (TAIEX, turnover, advancers/decliners, top 10 by volume, futures positioning) plus scope-dependent additions. An agent can distinguish it from snapshot.stock and snapshot.futures without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: use scope="stock" or "futures" when only one side is needed; use snapshot.stock for a single stock's ex-dividend/attention/disposition status; use snapshot.futures for individual futures contract prices and positions. Both the when and the when-not (不含個別契約行情價格) are stated with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot.moversTop gainers and losersARead-onlyIdempotentInspect
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。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 漲幅與跌幅各取前幾名,預設 10,最多 30。漲停與跌停家數不受這個數字影響,數的是全部個股。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| source | Yes | |
| 日期 | Yes | |
| 範圍 | Yes | |
| caveats | Yes | |
| 漲停家數 | Yes | |
| 漲幅排行 | Yes | |
| 跌停家數 | Yes | |
| 跌幅排行 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld/non-destructive, but the description goes well beyond them: limit-up and limit-down are derived from previous close and tick size because the data carries no flag, the universe excludes ETFs and warrants, OTC is out of scope, and the data is a previous-day snapshot rather than live. The only shortfall is that it doesn't state the response shape or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, routing guidance and caveats are front-loaded and each English sentence carries distinct information. The entire content is then repeated verbatim in Chinese, which roughly doubles length without adding new facts for a single-language reader, though it may aid multilingual routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still sketches the row fields (code, name, close, change, percentage change, volume). Combined with the stated coverage universe, the derived-limit methodology, the source (TWSE OpenAPI) and the non-live timing, an agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema's own text for `limit` is richer than the description, including the important note that limit-up/limit-down counts are unaffected by the limit. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a precise verb+resource+scope: percentage-change rankings among TWSE-listed stocks for the previous trading day, plus limit-up/limit-down counts. It explicitly names the sibling it is not (dataset.get sorted by price change, which ranks by absolute points). An agent can distinguish it from snapshot.market, snapshot.stock and dataset.get without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the exact user intents that select this tool ("top gainers / top losers / which stocks hit the daily limit") and gives an explicit when-not with the alternative (don't use dataset.get's change sort; use quote.realtime for live prices). Both the exclusion and the correct substitute are stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot.stockStock snapshotARead-onlyIdempotentInspect
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,不會整個失敗。
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | 上市公司股票代號,例如 "2330"、"2317"。只知道名稱時先用 quote.lookup。與 codes 擇一。 | |
| codes | No | 要並排比較的 2–5 檔代號,例如 ["2330", "2303", "2454"]。回傳 compared:每檔的價量、本益比、殖利率、股價淨值比與市值。與 code 擇一;比較模式不支援 include_financials、include_governance、include_margin、esg_topics。 | |
| esg_topics | No | 附上這些 ESG 主題的最新年度申報資料(每個主題多一次外呼)。不帶就不查。例如資訊安全含資訊外洩事件數與受影響顧客數,職業安全衛生含職災人數,董事會含女性董事比率。約一半的主題只有特定產業須揭露;公司不在某主題的表中會標明,不代表數值為 0。氣候相關議題管理是長篇文字,只在問到氣候風險時才帶。 | |
| history_days | No | 附上最近 N 個交易日的收盤價量與整段期間的漲跌幅(本服務自己存的日成交資訊,存檔自 2026-09-29 開始;不足 N 日會說明)。每列另附當天的本益比(pe_ratio,虧損公司是 null)、殖利率(dividend_yield)、股價淨值比(pb_ratio)、融資餘額(margin_balance)與融券餘額(short_balance),這幾項自 2026-10-20 才開始存,更早的日子是 null。問「最近走勢」「這個月漲多少」「本益比變化」「融資水位」時才帶。不支援比較模式(codes)。 | |
| include_margin | No | 附上融資融券(買賣、餘額、增減、使用率、券資比、停止或分配註記)與當日可借券賣出股數(多兩次外呼)。預設 false。 | |
| include_financials | No | 附上最新一季財報摘要:營收、毛利率、營業利益率、淨利率、每股盈餘、每股參考淨值、資產負債與負債比率(多一到兩次外呼)。預設 false。 | |
| include_governance | No | 附上公司治理摘要(多五次外呼)。預設 false。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| esg | No | |
| code | No | |
| name | No | |
| note | Yes | |
| quote | No | |
| alerts | No | |
| margin | No | |
| source | Yes | |
| caveats | Yes | |
| derived | No | |
| history | No | |
| profile | No | |
| compared | No | |
| dividends | No | |
| valuation | No | |
| financials | No | |
| governance | No | |
| monthly_revenue | No | |
| is_listed_company | No | |
| upcoming_ex_rights | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: data is previous-trading-day not live, archive cutoffs (2026-09-29 for prices, 2026-10-20 for P/E/margin with nulls earlier), per-ESG-topic extra external call cost, and graceful null+caveats behavior instead of total failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and constraints are front-loaded, but the entire content is then repeated in full in Chinese, roughly doubling length for an agent reader with near-identical payload. The parallel second half adds a few unique details (default ESG topics) but mostly duplicates the English text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, read-only aggregation tool this is thorough: it explains the multi-dataset merge, freshness cadence (daily/monthly/quarterly), archive windows, per-section call costs, null/caveats handling, and sibling routing. An output schema exists, so return-value detail is correctly not restated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema doesn't carry: the default ESG topic set used when an agent merely says 'ESG', the note that comparison mode silently drops all include_* options, and that ~half of ESG topics only apply to certain industries (absent ≠ zero).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('One TWSE-listed company in a single call') and enumerates exactly what the snapshot contains (price/volume, P/E, yield, P/B, revenue, dividends, attention/disposition status, market cap). Explicitly distinguishes itself from siblings (quote.realtime for live prices, snapshot.etf for ETFs), so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives per-parameter when-to-use rules: pass codes instead of code for 2-5 company comparison, history_days for recent trends, include_financials/governance/margin/esg_topics for optional sections. Names alternatives for adjacent needs ('要當下價格請用 quote.realtime', 'ETF 請用 snapshot.etf', lookup for names) and states comparison-mode exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
snapshot.stock1 field changed- changed
Input schema / properties / history_days / descriptionPrevious value: -"附上最近 N 個交易日的收盤價量與整段期間的漲跌幅(本服務自己存的日成交資訊,存檔自 2026-09-29 開始;不足 N 日會說明)。問「最近走勢」「這個月漲多少」時才帶。不支援比較模式(codes)。"New value: +"附上最近 N 個交易日的收盤價量與整段期間的漲跌幅(本服務自己存的日成交資訊,存檔自 2026-09-29 開始;不足 N 日會說明)。每列另附當天的本益比(pe_ratio,虧損公司是 null)、殖利率(dividend_yield)、股價淨值比(pb_ratio)、融資餘額(margin_balance)與融券餘額(short_balance),這幾項自 2026-10-20 才開始存,更早的日子是 null。問「最近走勢」「這個月漲多少」「本益比變化」「融資水位」時才帶。不支援比較模式(codes)。"
1 tool update
- Added
snapshot.movers
3 tool updates
- Changed
snapshot.etf4 fields changed- removed
Output schema / properties / is_etf / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / is_etf / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / name / typeAdded value: +[ + "string", + "null" +]
- Changed
snapshot.futures6 fields changed- removed
Output schema / properties / contract / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / contract / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / date / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / date / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / name / typeAdded value: +[ + "string", + "null" +]
- Changed
snapshot.stock4 fields changed- removed
Output schema / properties / is_listed_company / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / is_listed_company / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / name / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / name / typeAdded value: +[ + "string", + "null" +]
1 tool update
- Changed
snapshot.stock2 fields changed- added
Input schema / properties / history_daysAdded value: +{ + "description": "附上最近 N 個交易日的收盤價量與整段期間的漲跌幅(本服務自己存的日成交資訊,存檔自 2026-09-29 開始;不足 N 日會說明)。問「最近走勢」「這個月漲多少」時才帶。不支援比較模式(codes)。", + "maximum": 250, + "minimum": 2, + "type": "integer" +} - added
Output schema / properties / historyAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] +}
2 tool updates
- Changed
snapshot.market1 field changed- added
Output schema / properties / 交易日曆Added value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +}
- Changed
snapshot.stock5 fields changed- changed
Input schema / properties / code / descriptionPrevious value: -"上市公司股票代號,例如 \"2330\"、\"2317\"。只知道名稱時先用 quote.lookup。"New value: +"上市公司股票代號,例如 \"2330\"、\"2317\"。只知道名稱時先用 quote.lookup。與 codes 擇一。" - added
Input schema / properties / codesAdded value: +{ + "description": "要並排比較的 2–5 檔代號,例如 [\"2330\", \"2303\", \"2454\"]。回傳 compared:每檔的價量、本益比、殖利率、股價淨值比與市值。與 code 擇一;比較模式不支援 include_financials、include_governance、include_margin、esg_topics。", + "items": { + "pattern": "^[0-9A-Za-z]{1,10}$", + "type": "string" + }, + "maxItems": 5, + "minItems": 2, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "code" -] - added
Output schema / properties / comparedAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "code", - "name", - "is_listed_company", - "profile", - "quote", - "valuation", - "monthly_revenue", - "upcoming_ex_rights", - "dividends", - "alerts", - "derived", - "financials", - "governance", - "margin", - "esg", - "note", - "caveats", - "source" -]New value: +[ + "note", + "caveats", + "source" +]
1 tool update
- Changed
dataset.get3 fields changed- added
Input schema / properties / where / items / properties / field / descriptionAdded value: +"欄位鍵名(dataset.describe 列出的鍵名),例如 \"PEratio\"。" - added
Input schema / properties / where / items / properties / op / descriptionAdded value: +"比較方式:gt 大於、gte 大於等於、lt 小於、lte 小於等於、eq 等於、ne 不等於。" - added
Input schema / properties / where / items / properties / value / descriptionAdded value: +"要比較的數值。"
1 tool update
- Changed
quote.realtime2 fields changed- added
Output schema / properties / caveatsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "count", - "quotes", - "units", - "source" -]New value: +[ + "count", + "quotes", + "units", + "caveats", + "source" +]
18 tool updates
- Added
dataset.describe - Added
dataset.get - Added
dataset.search - Added
quote.lookup - Added
quote.realtime - Added
snapshot.etf - Added
snapshot.futures - Added
snapshot.market - Added
snapshot.stock - Removed
twse_describe_dataset - Removed
twse_etf_snapshot - Removed
twse_futures_snapshot - Removed
twse_get_dataset - Removed
twse_lookup - Removed
twse_market_overview - Removed
twse_realtime_quote - Removed
twse_search_datasets - Removed
twse_stock_snapshot
3 tool updates
- Changed
twse_describe_dataset1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "fields": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "source": { + "enum": [ + "twse", + "taifex" + ], + "type": "string" + }, + "summary": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "source", + "summary", + "tags", + "fields" + ], + "type": "object" +}
- Changed
twse_get_dataset1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "data": { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + "dataset_id": { + "type": "string" + }, + "note": { + "type": "string" + }, + "offset": { + "type": "number" + }, + "returned": { + "type": "number" + }, + "rows_in_source": { + "type": "number" + }, + "rows_matched": { + "type": "number" + }, + "source": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "dataset_id", + "summary", + "rows_in_source", + "rows_matched", + "returned", + "offset", + "note", + "source", + "data" + ], + "type": "object" +}
- Changed
twse_search_datasets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "results": { + "items": { + "additionalProperties": {}, + "properties": { + "dataset_id": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "dataset_id", + "summary", + "tags" + ], + "type": "object" + }, + "type": "array" + }, + "total_matched": { + "type": "number" + } + }, + "required": [ + "total_matched", + "results" + ], + "type": "object" +}
1 tool update
- Changed
twse_stock_snapshot1 field changed- changed
Input schema / properties / esg_topics / descriptionPrevious value: -"附上這些 ESG 主題的最新年度申報資料(每個主題多一次外呼)。不帶就不查。約一半的主題只有特定產業須揭露;公司不在某主題的表中會標明,不代表數值為 0。氣候相關議題管理是長篇文字,只在問到氣候風險時才帶。"New value: +"附上這些 ESG 主題的最新年度申報資料(每個主題多一次外呼)。不帶就不查。例如資訊安全含資訊外洩事件數與受影響顧客數,職業安全衛生含職災人數,董事會含女性董事比率。約一半的主題只有特定產業須揭露;公司不在某主題的表中會標明,不代表數值為 0。氣候相關議題管理是長篇文字,只在問到氣候風險時才帶。"
1 tool update
- Changed
twse_stock_snapshot3 fields changed- added
Input schema / properties / esg_topicsAdded value: +{ + "description": "附上這些 ESG 主題的最新年度申報資料(每個主題多一次外呼)。不帶就不查。約一半的主題只有特定產業須揭露;公司不在某主題的表中會標明,不代表數值為 0。氣候相關議題管理是長篇文字,只在問到氣候風險時才帶。", + "items": { + "enum": [ + "溫室氣體排放", + "能源管理", + "水資源管理", + "廢棄物管理", + "人力發展", + "董事會", + "投資人溝通", + "氣候相關議題管理", + "功能性委員會", + "燃料管理", + "產品生命週期", + "食品安全", + "供應鏈管理", + "產品品質與安全", + "社區關係", + "資訊安全", + "普惠金融", + "持股及控制力", + "風險管理政策", + "反競爭行為法律訴訟", + "職業安全衛生" + ], + "type": "string" + }, + "maxItems": 6, + "type": "array" +} - added
Output schema / properties / esgAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "const": "未查詢", + "type": "string" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "code", - "name", - "is_listed_company", - "profile", - "quote", - "valuation", - "monthly_revenue", - "upcoming_ex_rights", - "dividends", - "alerts", - "derived", - "financials", - "governance", - "margin", - "note", - "caveats", - "source" -]New value: +[ + "code", + "name", + "is_listed_company", + "profile", + "quote", + "valuation", + "monthly_revenue", + "upcoming_ex_rights", + "dividends", + "alerts", + "derived", + "financials", + "governance", + "margin", + "esg", + "note", + "caveats", + "source" +]
1 tool update
- Changed
twse_market_overview3 fields changed- changed
Input schema / properties / scope / descriptionPrevious value: -"\"all\"(預設)、\"stock\"(證券市場)或 \"futures\"(期貨籌碼)。"New value: +"\"all\"(預設,證券市場加期貨籌碼)、\"stock\"、\"futures\",或 \"events\"(近期事件行事曆)。" - changed
Input schema / properties / scope / enumPrevious value: -[ - "all", - "stock", - "futures" -]New value: +[ + "all", + "stock", + "futures", + "events" +] - added
Output schema / properties / 事件行事曆Added value: +{ + "additionalProperties": {}, + "properties": {}, + "type": "object" +}
2 tool updates
- Added
twse_futures_snapshot - Changed
twse_stock_snapshot3 fields changed- added
Input schema / properties / include_marginAdded value: +{ + "default": false, + "description": "附上融資融券(買賣、餘額、增減、使用率、券資比、停止或分配註記)與當日可借券賣出股數(多兩次外呼)。預設 false。", + "type": "boolean" +} - added
Output schema / properties / marginAdded value: +{ + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "const": "未查詢", + "type": "string" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "code", - "name", - "is_listed_company", - "profile", - "quote", - "valuation", - "monthly_revenue", - "upcoming_ex_rights", - "dividends", - "alerts", - "derived", - "financials", - "governance", - "note", - "caveats", - "source" -]New value: +[ + "code", + "name", + "is_listed_company", + "profile", + "quote", + "valuation", + "monthly_revenue", + "upcoming_ex_rights", + "dividends", + "alerts", + "derived", + "financials", + "governance", + "margin", + "note", + "caveats", + "source" +]
Related MCP Connectors
Taiwan finance open data: ETF, funds, TAIEX, sentiment, business climate, FX. Free & read-only.
Taiwan stock market data (TWMD): official-source, point-in-time-safe datasets via read-only tools.
US insider trades, 13F, 13D/G, Form 144, politician trades, financials, shorts; Taiwan stocks. Free.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables keyless access to Taiwan equities data from TWSE and TPEx, including prices, valuations, monthly revenue, disclosures, margin balances, and dividend dates.36 npmMIT
- AlicenseBqualityDmaintenanceProvides real-time access to Taiwan Stock Exchange market data, financial reports, and trading analytics. It enables users to query stock prices, market indices, and corporate profitability metrics through natural language.2219 npm7MIT
- AlicenseBqualityDmaintenanceSelf-hostable, read-only Taiwan stock-analysis MCP server that retrieves market data and computes reproducible indicators.1523MIT
- FlicenseNot gradedqualityBmaintenanceProvides Taiwan stock market data through FinMind v4 API, including daily OHLCV, monthly revenue, institutional investors, margin trading, dividends, and financial statements. Enables MCP clients like ChatGPT or Codex to query Taiwan financial datasets via simple tools.-
Glama MCP Gateway
Add one secure layer between your agents and this server.