Model Context Protocol (MCP) server for freee API integration
Tw Market Data is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Taiwan stock market data (TWMD): official-source, point-in-time-safe datasets via read-only tools.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http tw-market-data-mcp https://mcp.twmarketdata.com/mcp --header 'X-API-Key: ${X_API_KEY}'
# 2 — ask your agent for something these tools do
# list_datasets, describe_dataset, query_dataset and 38 more
It needs X_API_KEY (TWMD API key (get one at https://twmarketdata.com). A key-free trial tier is available for sample tickers): this sends it in the X-API-Key header from your environment, so export it first — its endpoint answers 401 without it.
Tw Market Data costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it. Claude Code reads X_API_KEY (TWMD API key (get one at https://twmarketdata.com). A key-free trial tier is available for sample tickers) from your environment each time it connects and sends it in the X-API-Key header — its endpoint answers 401 without it — so the key stays out of its config: export it in your shell profile (macOS, Linux), or run setx X_API_KEY … and open a new terminal (Windows).
claude mcp add --scope user --transport http tw-market-data-mcp https://mcp.twmarketdata.com/mcp --header 'X-API-Key: ${X_API_KEY}'Reconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs your own credential rather than the publisher’s: X-API-Key header — TWMD API key (get one at https://twmarketdata.com). A key-free trial tier is available for sample tickers.. You set it in your own client’s config, on your machine — this marketplace never holds it.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
41 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List available Taiwan-market datasets (discovery entry point). Returns id / 中文名 / category / tier / one-line description for each. Use this first to find the right data. Args: category: optional, e.g. 'chip'(籌碼) 'fundamental'(基本面) 'price'(行情) 'macro'(總經) 'relation'(關聯/產業鏈) 'derivatives'(期權) 'event'(事件) 'rag_text'(文本). tier: optional minimum plan: 'free' '
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | no | — | |
| tier | no | — |
FULL semantics of one dataset: grain (what a row is), field meanings+units, ★TIME-CORRECTNESS rules (knowledge_time_field / point_in_time_safe — read before backtesting), relations for cross-table reasoning, agent_hints (when to use), quant_use (which factors). Args: dataset_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset_id | string | yes | — |
Query rows with built-in look-ahead protection. ★ POINT-IN-TIME: pass as_of (YYYY-MM-DD) for backtesting/agent-learning. For non-point-in-time-safe datasets (fundamentals, monthly_revenue, dividend_policy…) rows are filtered by DISCLOSURE date <= as_of, so the agent only sees what was public at that moment. Omit as_of only for present-day lookups (warned). ★ IF A VALUE IS IN `c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset_id | string | yes | — |
| tickers | no | — | |
| start | no | — | |
| end | no | — | |
| as_of | no | — | |
| limit | integer | no | — |
| cursor | no | — |
Traverse the knowledge graph for cross-table / supply-chain reasoning. - dataset_id: returns join-able datasets (+why) to plan multi-table analysis. - ticker: returns its industry value-chain node + peers in the same node (supply-chain reasoning). Args: dataset_id (e.g. 'equity_daily_prices') and/or ticker (e.g. '2330').
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset_id | no | — | |
| ticker | no | — |
Semantic search over MOPS filings, financial-statement notes and company news. Answers questions a keyword filter cannot: "what risks did this company disclose this quarter?", "which companies mentioned CoWoS capacity expansion?" — matching on MEANING, so a paragraph that never uses your exact words still ranks. ★ POINT-IN-TIME: pass as_of (YYYY-MM-DD). Chunks are filtered `pub
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| tickers | no | — | |
| doc_type | no | — | |
| as_of | no | — | |
| source_tier | no | — | |
| limit | integer | no | — |
Where did this number come from, and when could anyone have known it? (WP-6) ★ THIS IS THE GROUNDING TOOL. Every other tool's answer is supposed to be expandable through this one: given a ticker, a field and a date, it names the dataset that serves that field, the knowledge column, and WHICH as_of rule applies on that date. Use it whenever you are about to state a number as fact.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | — |
| field | string | yes | — |
| date | string | yes | — |
| dataset | no | — |
Prove a row was in the snapshot TWMD published — and check it yourself. Returns the Merkle sibling path, the signed root, and the checkpoint it belongs to. It returns the PATH rather than a yes/no on purpose: a service that answers "yes, it is included, trust me" is the opposite of verifiable. Recompute the root from the leaf and the path; the verifier is ~30 lines and is written
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset | string | yes | — |
| row_key | string | yes | — |
| snapshot_version | no | — |
Produce a bibliographic citation for TWMD data — APA, BibTeX, and a re-verifiable token. ★ FOR PAPERS, REGULATORY FILINGS AND ANYTHING A REVIEWER WILL RE-CHECK LATER. A dataset is corrected, backfilled and re-run. Three years from now a reviewer opening our API sees different numbers than the paper, and nobody — author, reviewer, or us — can tell whether the data changed or the au
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset | string | yes | — |
| as_of | no | — | |
| row_key | no | — |
Read the FULL TEXT of filings and announcements — with proof links and a knowledge cutoff. ★ NOT search_filings. That one ranks passages by similarity and hands you fragments; this hands you whole documents so you can read what was actually said and where it sat in the filing. Similarity is not importance, and a fragment cannot show you its own context. ★ POINT-IN-TIME: pass `a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source | string | yes | — |
| tickers | no | — | |
| as_of | no | — | |
| since | no | — | |
| limit | integer | no | — |
Answer a plain-language question in Taiwanese-market vocabulary, sentence by sourced sentence. ★ FOR BEGINNERS WHO DO NOT KNOW WHICH DATASET THEY WANT. Ask "PBR 是什麼" or "什麼叫漲跌停" in ordinary words; routing happens on our side. describe_dataset explains a table you already named, search_filings digs through company disclosures, and query_dataset returns rows — this one turns a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question | string | yes | — |
| as_of | no | — |
Turn rows you already fetched into a Vega-Lite drawing your chat window can render. ★ IT DRAWS; IT DOES NOT FETCH. Hand it the output of query_dataset — this tool never touches the database, so it cannot bypass the as_of filter those rows were selected under. A plotting tool that fetched its own numbers would be a second data path, and a second path eventually disagrees with t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| rows | array | yes | — |
| x_field | string | yes | — |
| y_field | string | yes | — |
| title | string | no | — |
| mark | string | no | — |
Post-process rows already returned by query_dataset; without rows it returns a clear hint. Turn a spoken shortlist description into explicit numeric cut-offs, and show the cut-offs. ★ THE THRESHOLDS COME BACK WITH THE SHORTLIST. "低本益比" becomes per < 15, and that 15 is printed in applied[] so you can disagree with it. A filter that hands over thirty names without saying where
| Parameter | Type | Required | Notes |
|---|---|---|---|
| conditions | string | yes | — |
| as_of | no | — | |
| rows | no | — |
The Taiwan business-cycle light (NDC monitoring indicator) as a monthly series. ★ THIS IS A REVISED FIGURE, NOT A POINT-IN-TIME ONE. Every response carries revision_basis: as_revised. Our source holds exactly one row per month — the CURRENT value, not the value as first published — and it records no publication date. ★ as_of IS REFUSED, AND THE REFUSAL IS THE POINT. There is
| Parameter | Type | Required | Notes |
|---|---|---|---|
| start | no | — | |
| end | no | — | |
| as_of | no | — | |
| limit | integer | no | — |
Sort corporate dates into what is still ahead and what has already passed. ★ TWO DATES, NOT ONE. What is "upcoming" is decided by the date the event HAPPENS; as_of filters on the date it was ANNOUNCED. An ex-dividend declared on 2026-08-01 for 2026-09-15 is both already known and still ahead on 2026-08-10. Collapsing the two fields either hides every future date or reports last
| Parameter | Type | Required | Notes |
|---|---|---|---|
| rows | no | — | |
| today | string | no | — |
| as_of | no | — |
Lay two to five named companies side by side on the same measures, gaps marked as gaps. ★ AN ABSENT FIGURE STAYS ABSENT, AND THE COMPANY STAYS ON THE TABLE. A blank cell is reported as available: false, never filled with a zero, a previous period, or by quietly dropping the column. Dropping is the worst of the three: it converts "we do not hold this measure for that company" int
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tickers | array | yes | — |
| metrics | array | yes | — |
| rows_by_ticker | no | — | |
| as_of | no | — |
Emit a copy-pasteable HTTP snippet wired to the real endpoint, header and parameter names. ★ FOR WRITING YOUR OWN CLIENT, NOT FOR GETTING DATA. Every other tool here answers a question; this one hands you source code so your program can ask it directly over HTTPS. Nothing is fetched and no rows come back. ★ THE CONSTANTS ARE READ OUT OF THE SERVER, NOT REMEMBERED. Base URL, the `
| Parameter | Type | Required | Notes |
|---|---|---|---|
| intent | string | yes | — |
| language | string | no | — |
| ticker | string | no | — |
| as_of | no | — |
Replay a saved multi-step routine over rows you fetched, with every step listed. ★ THREE ROUTINES: momentum_scan (rank by a return column), earnings_surprise (actual versus estimate), dividend_capture (which ex-dates are still ahead). ★ A SAVED ROUTINE IS NOT A TRADING VIEW. The names are conventional labels for well-known sequences; what runs is arithmetic over rows you su
| Parameter | Type | Required | Notes |
|---|---|---|---|
| recipe | string | yes | — |
| rows | no | — | |
| as_of | no | — | |
| today | string | no | — |
| top_n | integer | no | — |
| min_yield | no | — |
Hand an unregistered caller a short taste of an open dataset, plus where to unlock the rest. ★ WHAT AN ACCOUNTLESS CALLER GETS INSTEAD OF A BARE REFUSAL. Somebody arriving through a chat connector with no plan would otherwise meet a flat rejection, which the host model relays as "this service turned you down". ★ WHAT IS ACTUALLY FREE, STATED CONCRETELY. The reference resources re
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset | string | yes | — |
| keyless_eligible | boolean | no | — |
| rows | no | — |
Submit a point-in-time backtest. NON-BLOCKING: returns a run_id at once; poll get_backtest. job_status tells you where it is: cached (this exact backtest was already computed — the stored result is returned immediately), done (it finished within wait_seconds), or queued / running (call get_backtest(run_id) until it is done or failed). The same spe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | string | yes | — |
| start | string | yes | — |
| end | string | yes | — |
| as_of | string | yes | — |
| tickers | no | — | |
| universe_kind | string | no | — |
| market | no | — | |
| rebalance | string | no | — |
| cost_bps | number | no | — |
| params | no | — | |
| label | no | — | |
| wait_seconds | number | no | — |
| costs | no | — |
Retrieve a previous backtest by run_id — the full record, including why it was rejected. Only runs in YOUR namespace are visible; a run_id belonging to someone else is simply not found. Args: run_id (the twmd_bt_… handle returned by run_backtest).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | — |
Re-run a stored backtest and report whether it still produces the same numbers. Same spec, same as_of, same data questions. If the numbers moved, either the engine version changed or the underlying data was restated — both are reported, neither is smoothed over. Args: run_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| run_id | string | yes | — |
Browse an INDEX of your past backtest runs — ids and headline metrics only, no re-execution. Use when you want to find a run whose id you have forgotten. It never re-computes anything: run_backtest executes a new one, get_backtest opens a single record in full, and replay_backtest re-derives one to check reproducibility. This is the catalogue, not any of thos
| Parameter | Type | Required | Notes |
|---|---|---|---|
| strategy_id | no | — | |
| limit | integer | no | — |
Remember something, with its sources and its knowledge time. Nothing is ever overwritten: saving a factor_def or watchlist under an existing key SUPERSEDES the previous version (both rows survive, so "what did I believe in June?" stays answerable), and saving identical content twice is a no-op rather than a duplicate. Args: kind: 'query' | 'factor_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | — |
| content | object | yes | — |
| key | no | — | |
| as_of | no | — | |
| source_query_ids | no | — | |
| agent_id | no | — |
Recall your own memories — hybrid (semantic + exact-term), with provenance attached. Every result carries where it came from (source_query_ids, replayable), when it was believed (valid_from/valid_to) and what knowledge time it is about (as_of), plus a recall block stating which model and which filters produced the answer. Args: query: what yo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | — |
| kinds | no | — | |
| as_of | no | — | |
| key | no | — | |
| agent_id | no | — | |
| include_superseded | boolean | no | — |
| limit | integer | no | — |
Read the tickers on one named watchlist, as it stands right now. A curated roster you maintain — distinct from memory_search, which digs through everything you ever recorded, and from list_alerts, which is about price triggers rather than symbols you are following. Args: key — the roster's name, default 'default'.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| key | string | no | — |
Re-run a remembered query by its twmd_q_… id, through the read API's own replay store. This is what makes a recalled finding checkable: the memory says where it came from, and this fetches that same data again. It never re-executes the query by another route — two implementations of "replay" would be two answers to a question whose whole value is having one.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query_id | string | yes | — |
Run a multi-agent research pass and return a structured, sourced report. Six roles run in order — data analyst, factor researcher, backtest engineer, risk officer, portfolio manager, compliance officer. Each step's output carries the query_ids behind it; risks are reported alongside results, not beneath them; and anything the run could not do is listed as a limit
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | yes | — |
| as_of | string | yes | — |
| tickers | no | — | |
| start | no | — | |
| end | no | — | |
| max_backtests | integer | no | — |
Retrieve one of YOUR previous research reports. Others' runs are simply not found. Args: research_id — the identifier run_research returned when it started that run.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| research_id | string | yes | — |
Financial actions proposed by your research runs that are waiting for a human decision. Nothing here has been executed or ever will be by this system. These are proposals.
No parameter schema on file.
Record a HUMAN's approval of a proposed action. This writes an audit record naming who approved what, and when. It does NOT execute the action: TWMD has no order or funds path, by design. Execution, if any, happens elsewhere and is performed by a person. Args: action_id: from list_pending_actions or a report's proposed_actions. approver
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action_id | string | yes | — |
| approver | string | yes | — |
Show the price-trigger rules you have armed, and whether each is still armed. A read-only inventory of thresholds you asked to be watched — it arms nothing and cancels nothing (set_price_alert arms, delete_alert cancels). Another customer's triggers are simply not visible here.
No parameter schema on file.
Leave a standing instruction: tell me when this symbol crosses this price. The alert OUTLIVES this conversation. It is evaluated against official daily closes by a resident agent and delivered to your realtime stream and to any webhook endpoints you have registered — signed, retried, and de-duplicated so one crossing is one notification. This is a NOTIFICATION, no
| Parameter | Type | Required | Notes |
|---|---|---|---|
| rule_id | string | yes | — |
| symbol | string | yes | — |
| direction | string | yes | — |
| threshold | number | yes | — |
| label | no | — | |
| edge_triggered | boolean | no | — |
Cancel one armed price trigger permanently, by its rule id. Disarms a single watch so it will not fire again — the opposite of set_price_alert, and unlike list_alerts it changes state rather than reporting it. Cancellation is irreversible: re-arming means creating a fresh trigger. Naming somebody else's rule id cancels nothing at all. Args: rule_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| rule_id | string | yes | — |
Measure a portfolio you state against limits you state, on official point-in-time prices. Reports concentration and peak-to-trough drawdown, and NAMES every position it could not price rather than quietly assessing the rest — an assessment covering 60% of a portfolio without saying so is worse than none. Any breach produces a PROPOSAL (e.g. "reduce 2330") that req
| Parameter | Type | Required | Notes |
|---|---|---|---|
| positions | array | yes | — |
| as_of | no | — | |
| max_position_weight | number | no | — |
| max_drawdown | number | no | — |
What YOUR agents have actually done, from the durable audit trail. Every resident agent records what it did and ON WHAT BASIS — the rule and the two closes behind an alert, the coverage and limits behind a risk finding, the run_id and declared trial count behind a factor verdict. This is that trail, and it survives deploys. Reports which agents have recorded NOTHI
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | — |
Verdicts from the overnight factor search on YOUR namespace — including the rejections. The rejections are returned deliberately. A research log that keeps only the winners is the highlight reel overfitting lives in, and the acceptance RATE is the number that tells you whether the anti-overfitting gate is doing its job: a search that accepts most of what it tries h
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | — |
一檔股票的誠實體檢:成長、獲利品質、估值、籌碼、紅旗,每個數字可驗證。 ★ 這是事實整理,不是投資建議、不是預測、不是目標價。輸出帶 does_not_prove,轉述時請一併保留。 ★ POINT-IN-TIME:as_of 逐資料集尊重揭露時差 —— 月營收用法定截止日推得的 估計時點,財報用出表日,估值是當日。不給 as_of 就用「現在可知的最新」, 不是今天。 ★ 沒看到的東西會列在 cannot_see,並說明是「查了沒有」「查詢失敗」還是 「散佈權未取得」—— 三者不同。⚠️ 不要替 cannot_see 裡的項目估算或補值。 ★ checked_and_clear 是「查過而且確認沒有」(例如近一年無
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | — |
| as_of | no | — |
籌碼結構:法人分項、融資融券、借券使用率、大戶集中度、董監質押。 ★ 事實整理,不是投資建議、不是預測、不是目標價。輸出帶 does_not_prove。 ★ POINT-IN-TIME:as_of 逐資料集尊重揭露時差;不給就用「現在可知的最新」。 ★ 看不到的在 cannot_see,並分「查了沒有 / 查詢失敗 / 散佈權未取得」。 ⚠️ 逐券商分點進出永遠在 cannot_see —— 散佈權未取得,不要替它估算。 ★ PRECONDITIONS:自己取數,rows 不需要先用 query_dataset 備好;requires 一個 已識別的 session。方案沒涵蓋的資料集以 not_licensed 進 cannot_see,不整支失敗。
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | — |
| as_of | no | — |
總經 Regime:景氣信號、利率與殖利率曲線、匯率、資金流。 ★ 這支講的是整個市場,不是任何一檔個股 —— 所以它不收 ticker。 ★ 事實整理,不是投資建議、不是預測。輸出帶 does_not_prove。 ★ ⚠️ macro_worldbank 類的來源會回溯修訂歷史年度:今天讀到的舊年度數字 和當時看到的不是同一個,pit_notes 會標出來。 ★ Args:只有 as_of(選填)—— 它不收 ticker,因為主體是整個市場。 ★ Returns:同一個誠實信封;subject 固定是 "TW_MARKET"。 ★ 例如問「現在景氣循環在哪個位置」就是這一支,而不是問某一檔。 ★ PRECON
| Parameter | Type | Required | Notes |
|---|---|---|---|
| as_of | no | — |
供應鏈與同業:產業鏈位置、同業分組、轉投資、外銷訂單 vs 營收。 ★ 事實整理,不是投資建議、不是預測。輸出帶 does_not_prove。 ★ ⚠️ company_peer_groups 無日期欄:指定過去的 as_of 時,回的是現況分組, pit_notes 會標「非當時分類」。 ★ ⚠️ 質化的客戶/供應商關係與分部營收在年報附註,那條來源尚未建置 —— 固定列在 cannot_see(status=no_loader),不是這次查失敗。 ★ Args:ticker(例如 "2330")、as_of(選填)。 ★ Returns:誠實信封;外銷訂單與營收的背離會 listed in concerns。
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | — |
| as_of | no | — |
事件與市場結構風險:隱含波動率、注意處置、裁罰訴訟、放空限制、因子。 ★ ⚠️ 部位集中度與回撤不在這裡 —— 那是 risk_assess 的職責。重算一份會產生 第二個答案,而兩個都帶著我們的名字。 ★ checked_and_clear 是「查過而且確認沒有」(例如近一年無裁罰),和 cannot_see 的「不知道」是兩回事。 ★ 事實整理,不是投資建議、不是預測。輸出帶 does_not_prove。 ★ Args:ticker(例如 "2330")、as_of(選填)。 ★ Returns:誠實信封;事件風險 listed in concerns,查過確認沒有的 listed in `checked_a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | — |
| as_of | no | — |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Tw Market Data or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| list_datasets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| describe_dataset | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| query_dataset | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| find_related | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| search_filings | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| explain_provenance | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_inclusion_proof | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| cite_this | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| read_primary_text | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| ask | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| chart | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| screen | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| query_regime | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| calendar | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| compare | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_code_example | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| run_recipe | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| try_sample | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| run_backtest | state-write | state-write: declares readOnlyHint: false |
| get_backtest | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| replay_backtest | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_backtests | untrusted-input | untrusted-input: keyword "browse", declares openWorldHint: true (interacts with entities outside the server) |
| memory_save | state-write | state-write: declares readOnlyHint: false |
| memory_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| memory_get_watchlist | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| memory_replay_query | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| run_research | state-write | state-write: declares readOnlyHint: false |
| get_research | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_pending_actions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| approve_action | state-write | state-write: declares readOnlyHint: false |
| list_alerts | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| set_price_alert | external-sinkstate-write | external-sink: keyword "webhook"; state-write: declares readOnlyHint: false |
| delete_alert | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| risk_assess | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| agent_activity | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_factor_findings | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| company_health_check | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| positioning_read | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| macro_regime_read | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| supply_chain_read | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| risk_read | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.28.1.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Tw Market Data can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.