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.6% over 55 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 9 tools
Each tool has a clearly distinct purpose: dataset.search/describe/get handle catalog and raw data retrieval, quote.lookup vs quote.realtime separate static code resolution from live prices, and snapshot.* tools each target a specific entity or market scope. Descriptions explicitly clarify boundaries, such as when to use dataset.get instead of snapshot.* or snapshot.stock instead of snapshot.etf.
Names consistently use a lowercase namespace.operation or namespace.entity pattern with dots, making groupings predictable. The minor deviation is that dataset.* and quote.lookup use verbs while snapshot.* and quote.realtime use nouns/adjectives, so it is not a uniform verb_noun scheme.
Nine tools are well-scoped for a broad Taiwan market data server covering catalog search, raw data access, code lookup, realtime quotes, and snapshots for stocks, ETFs, futures, and the whole market. Each tool has a clear role with no redundant or trivial additions.
Coverage is strong for TWSE-listed stocks/ETFs, TAIFEX futures, market overview, and generic dataset retrieval. Minor gaps exist: there is no name lookup or snapshot tool for OTC/TPEx securities even though quote.realtime supports OTC, and historical time-series retrieval is limited to recent days via snapshot.stock rather than a dedicated ranged-history tool.
Available Tools
9 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,不要自己翻頁比大小。
| 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), yet the description adds genuinely new behavior: the 30-row default vs 200 hard cap, that upstream returns the entire table (possibly tens of thousands of rows) so filtering is server-side, that most daily tables hold the previous trading day's after-close data, that the response note states the period, and the licensing terms.
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 portion is front-loaded and tight, and the Chinese section is not pure duplication — it adds the upstream-returns-everything detail. However the bilingual restatement makes the block longer than strictly necessary for a reader of either language, so it is efficient but not maximally economical.
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 9-parameter tool with nested objects, enums, and an output schema, the description supplies everything an agent needs: prerequisite step, filtering/sorting strategy, paging defaults and caps, and the data-freshness caveat. Return-value shape is rightly left to the output schema.
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 every parameter in detail (exact-match code semantics, where operators, limit caps, sort_by behavior). The description only restates this at a higher level ('code is an exact match; match and where') without adding syntax or format meaning 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 (fetch rows from a TWSE OpenAPI or TAIFEX OAS dataset) and distinguishes itself from siblings by naming dataset.search as the required prerequisite for obtaining dataset_id. An agent can tell what this does and how it relates to dataset.describe/dataset.search 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 explicit when-to-use guidance ('find the dataset_id with dataset.search first; do not guess it'), an explicit alternative path ('for rankings and screens use where and sort_by instead of paging through rows'), and a freshness caveat telling the agent not to treat results as live prices. Nothing is left to inference.
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 declare readOnly, idempotent, open-world, non-destructive. Beyond those, the description adds genuinely useful traits: source is TWSE OpenAPI updated after each trading day (not live), three datasets are merged with parallel queries, and a section that cannot be fetched returns null plus a caveat rather than failing the whole call.
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 the core content (what the snapshot contains) before source, freshness, and failure semantics. The bilingual duplication roughly doubles length without adding new facts, but the structure stays purposeful and scannable.
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, return-value detail is not required, and annotations carry the safety profile. The description nonetheless covers freshness, source, and partial-failure behavior, leaving little an agent needs to know in order to call this 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%, so both parameters (code, include_realtime) are already documented in the schema. The description notes that include_realtime costs an extra outbound call, but that detail is also in the schema's own description, so it adds little beyond the baseline.
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: one TWSE-listed ETF with fund profile, prior-day price/volume, and regular-savings popularity. It is clear what the tool gathers, though differentiation from sibling snapshot.stock/snapshot.futures is only implicit via the 'ETF' framing, and explicit only for quote.realtime.
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 clear context: this is a non-live, after-close snapshot, and for current prices it points to quote.realtime. It provides a positive routing rule but states no explicit when-not or exclusion conditions for this tool itself, keeping it just below full marks.
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, non-destructive, open-world, so the safety profile is covered. The description adds real behavioral context beyond them: data source (TAIFEX OAS), that it is not live, that it covers both regular and after-hours sessions, and crucially that an ambiguous name returns candidates rather than erroring or guessing — a non-obvious control-flow behavior an agent must handle.
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 with the core purpose first, then input forms, then scope exclusions. The one structural weakness is that the entire content is duplicated bilingually (Chinese mirror of the English), roughly doubling length without adding information for a single-language reader.
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-value explanation is not required, yet the description still sketches the payload. For a single-parameter, read-only, disambiguation-prone snapshot tool, the description covers source, freshness, scope boundaries, ambiguity handling and alternatives to siblings — essentially complete, with only minor redundancy in the bilingual restatement.
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 there is only one parameter, so the baseline is 3. The description goes beyond the schema by listing concrete accepted codes ('TX', 'MTX', 'TMF', 'CDF') and Chinese names ('台指期', '小台', '台積電期貨') and by defining the multi-match resolution behavior, which the schema does not express.
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?
Names a specific verb/resource combination — one TAIFEX futures contract for the latest trading day — and enumerates the returned data (OHLC, change, volume, settlement, open interest by month, near-month summary, institutional/large-trader positions, final settlement). It explicitly excludes options and aggregate futures chips, routing those to dataset.search or snapshot.market, so it is distinguishable from siblings 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?
Clearly states the input forms accepted ('TX', 'MTX' codes or Chinese names) and the disambiguation workflow: an ambiguous name returns candidates only, and the agent should confirm with the user then re-query by code. It also points to dataset.search / snapshot.market for options and overall futures positioning. It lacks an explicit statement of when this tool is preferred over the closer sibling snapshot.market beyond the scope hint, but the routing guidance is solid.
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.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 price history (daily closes and the period change, archived by this service since 2026-09-29), 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 起存檔)帶 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 日會說明)。問「最近走勢」「這個月漲多少」時才帶。不支援比較模式(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 declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false. The description adds genuinely useful non-annotation detail: data source (TWSE OpenAPI), freshness semantics (daily tables are previous-trading-day, revenue monthly, financials quarterly, not live), per-section external-call cost, and graceful degradation ('any missing section is null and recorded in caveats, never fails entirely'). However partial coverage of the safety/latency profile keeps it from the top band.
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 text is front-loaded and each sentence in it earns its place, but the description is roughly doubled in length by a full Chinese restatement of the same content, which is redundant for most agents. The overall payload is long relative to the schema, which already carries the parameter detail.
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 and full annotation coverage already present, the description still supplies everything an agent needs to call correctly: data freshness caveats, per-section external-call cost, comparison-vs-single mode semantics, and the null/caveats failure contract. Nothing material 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 the baseline is 3; the schema already documents code, codes, history_days and each include_* flag. The description still adds meaning beyond the schema, notably the default ESG topic set when a user just says 'ESG' and the comparison-mode restriction. That marginal added guidance lifts it above baseline.
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?
Opens with a specific verb+resource: 'One TWSE-listed company in a single call' and enumerates exactly what it returns (profile, prior-day price/volume, P/E, dividend yield, P/B, monthly revenue, dividends, ex-dividend dates, attention/disposition status, market cap). It also distinguishes itself from siblings by naming snapshot.etf for ETFs and quote.realtime for live prices. An agent can identify this tool 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 when-to-use routing for each mode: pass codes instead of code for 2–5 company comparison, pass history_days for recent trend, and use quote.realtime for live prices. It names the sibling alternative for the ETF case. Exclusions are stated (comparison mode does not support the optional include_* sections).
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.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" +]
1 tool update
- Changed
twse_stock_snapshot2 fields changed- added
Output schema / properties / dividendsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "code", - "name", - "is_listed_company", - "profile", - "quote", - "valuation", - "monthly_revenue", - "upcoming_ex_rights", - "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", + "note", + "caveats", + "source" +]
5 tool updates
- Changed
twse_etf_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "caveats": { + "items": { + "type": "string" + }, + "type": "array" + }, + "code": { + "type": "string" + }, + "derived": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "is_etf": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "profile": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "quote": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "realtime": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + }, + { + "const": "未查詢", + "type": "string" + } + ] + }, + "regular_savings": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "source": { + "type": "string" + } + }, + "required": [ + "code", + "name", + "is_etf", + "profile", + "quote", + "realtime", + "regular_savings", + "derived", + "caveats", + "source" + ], + "type": "object" +}
- Changed
twse_lookup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "caveats": { + "items": { + "type": "string" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "total_matched": { + "type": "number" + } + }, + "required": [ + "query", + "total_matched", + "results", + "caveats", + "source" + ], + "type": "object" +}
- Changed
twse_market_overview1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "caveats": { + "items": { + "type": "string" + }, + "type": "array" + }, + "note": { + "type": "string" + }, + "source": { + "type": "string" + }, + "期貨籌碼": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "證券市場": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + } + }, + "required": [ + "note", + "caveats", + "source" + ], + "type": "object" +}
- Changed
twse_realtime_quote1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "count": { + "type": "number" + }, + "quotes": { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "units": { + "type": "string" + } + }, + "required": [ + "count", + "quotes", + "units", + "source" + ], + "type": "object" +}
- Changed
twse_stock_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "alerts": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "caveats": { + "items": { + "type": "string" + }, + "type": "array" + }, + "code": { + "type": "string" + }, + "derived": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "financials": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + }, + { + "const": "未查詢", + "type": "string" + } + ] + }, + "governance": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "const": "未查詢", + "type": "string" + } + ] + }, + "is_listed_company": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "monthly_revenue": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "note": { + "type": "string" + }, + "profile": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "quote": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "source": { + "type": "string" + }, + "upcoming_ex_rights": { + "anyOf": [ + { + "items": { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "valuation": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": {}, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "code", + "name", + "is_listed_company", + "profile", + "quote", + "valuation", + "monthly_revenue", + "upcoming_ex_rights", + "alerts", + "derived", + "financials", + "governance", + "note", + "caveats", + "source" + ], + "type": "object" +}
1 tool update
- Changed
twse_stock_snapshot1 field changed- changed
Input schema / properties / include_financials / descriptionPrevious value: -"附上最新一季財報摘要(多一到兩次外呼)。預設 false。"New value: +"附上最新一季財報摘要:營收、毛利率、營業利益率、淨利率、每股盈餘、每股參考淨值、資產負債與負債比率(多一到兩次外呼)。預設 false。"
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.
Stock market data for AI agents: real-time quotes, financials, options, SEC filings and news.
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.56 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
- AlicenseBqualityCmaintenanceSelf-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.