Skip to main content
Glama
kevinlin49361128-stack

stock-analyzer-mcp

Stock Analyzer MCP

📡 The Model Context Protocol server bundled with Stock Analyzer — a macOS desktop app for Taiwan + US stock market analysis.

An MCP server with deep Taiwan stock coverage (TWSE / TPEx + three major institutional flows + chip data + monthly revenue). 95 tools across 15 categories + 6 resources. Local-first — runs in-process inside the Electron app, no API costs, no cloud dependency.

Current version: MCP server 1.3.0 · Stock Analyzer app 0.48.0-beta · Updated 2026-06-30


⚠️ How this MCP server actually works

This repo contains the MCP shim source (mcp-server.js + lib/ai-tools + Dockerfile). The shim is a thin HTTP-to-stdio bridge — when an MCP client invokes a tool, the shim proxies the call to http://localhost:3000/api/*, where the Stock Analyzer desktop app's embedded Express backend does the actual work (DB query, computation, analysis).

The MCP server in this repo, run standalone (e.g. via docker run), can advertise its 95 tools through introspection but cannot execute them. You need Stock Analyzer running on the same machine for tools to actually return data.

This split is intentional — the analysis engine + market data + license-gated features live in the closed-source desktop app; the MCP shim is open-source (MIT) so the integration surface is fully transparent.


Related MCP server: Taiwan Stock Real-Time Analysis MCP Server

Why this repo exists

The Stock Analyzer desktop app itself is a commercial product (Lite tier free, Standard NT$1,499, Premium NT$2,999 — all one-time purchases, no subscription). This repo exists to:

  • Open-source the MCP shim layer under MIT so marketplaces (awesome-mcp-servers, mcpservers.org, PulseMCP, Glama) can build & verify a working image

  • Provide a public canonical link for MCP discovery

  • Host the integration guide separately from the closed app source

  • Make Claude Desktop / Claude Code / agentic frameworks easy to configure against the bundled MCP server


Build (Docker, for Glama / marketplaces)

docker build -t stock-analyzer-mcp .
docker run -i --rm stock-analyzer-mcp   # stdio JSON-RPC on stdin/stdout

Image is ~258 MB (node:20-alpine + 2 npm deps). The build skips better-sqlite3, Electron, and other backend-only dependencies because the shim itself never imports them — all data calls go via HTTP to the locally-running Stock Analyzer app's /api/* endpoints.


What's in this MCP server

95 tools across 15 categories

Category

Tools

Examples

market (14)

Quotes, history, heatmap, sector ranking, news, FX, seasonality, ETF holdings, trading-day status

get_stock_price, get_market_heatmap, get_seasonality

chips (6)

Three major institutional flows, fund flow Sankey, insider alerts, abnormal blocks, margin ranking

get_institutional_flow, get_fund_flow_sankey

fundamentals (6)

Financial statements, monthly revenue, dividends, EPS, DCF valuation

get_financial_statements, calculate_dcf

technical (5)

RSI / MACD / KD / Bollinger / Beta / correlation / candlestick patterns

get_technical_indicators, detect_kline_patterns

macro (8)

FED policy, yield curve, inflation, employment, earnings calendar

get_macro_snapshot, get_fed_policy_stance

sentiment (6)

News sentiment, market sentiment, per-stock sentiment, forecasts, entry strategies, TAIFEX put/call ratio

get_stock_sentiment_v2, get_sentiment_forecasts

portfolio (11)

Holdings, P&L, performance, concentration, signals, trade CRUD

get_portfolio, get_portfolio_concentration

backtest (5)

Single-stock, multi-strategy, grid search, MC factor mining, random portfolio

backtest_strategy, monte_carlo_factor_mining

risk (6)

VaR, systemic risk, portfolio optimization, marginal/component VaR contribution, stress test, scenario stress propagation

get_systemic_risk, get_risk_contribution, run_scenario

ai workflow (7)

Full-stock analysis, screener, workflows, notes, + deep-dive debate + daily briefing + candidate comparison + post-trade review

research_stock_deep_dive, portfolio_daily_briefing

thesis (7)

Investment hypothesis CRUD + quality evaluation

upsert_thesis, evaluate_thesis_quality

watchlist (4)

Watchlist CRUD

add_watchlist

alert (3)

Price alerts

set_price_alert

backfill (2)

Admin data backfill

trigger_backfill

forecast (5)

Price probability cone (GBM Monte Carlo), un-gameable forecast-calibration track-record, TW pre-open cross-market context, as-of knowability replay (multi-method calibration), per-stock pre-open US lead

get_price_forecast, get_asof_replay, get_stock_preopen_lead

Every tool carries:

  • annotations.readOnlyHint — whether the tool modifies state (clients auto-confirm before destructive ops)

  • annotations.destructiveHintdelete_* / cancel_* flagged true

  • annotations.idempotentHintupsert_* / update_* flagged true

  • _meta.tw.stockanalyzer/estimated_cost_usd — worst-case LLM cost (most tools $0; deep-dive ~$0.16)

6 resources (Claude Desktop @-mentionable)

Inject context into your conversation without burning tool calls:

Resource

Content

saa://portfolio

Full holdings (TW + US, USD/TWD unified pricing, unrealized P&L)

saa://watchlist

All watchlist entries with live quotes + alert states

saa://thesis

Active investment theses (hypothesis, key levels, next review dates)

saa://market/today

Three major institutional flows / sector winners / systemic risk / FX

saa://reports/recent

Latest portfolio briefing (free; doesn't auto-trigger LLM)

saa://system/info

Server introspection (version, schema version, active profile, tool count)

Profiles (filter what gets exposed)

Set SAA_MCP_PROFILE env var to gate which tools are visible to the LLM client:

Profile

Tools exposed

Use case

default (omit)

All 95

Your personal Claude Desktop

safe_readonly

80 read-only tools

Shared / untrusted LLM clients — blocks add_trade / delete_* / upsert_thesis / set_price_alert / etc.

Resources stay available in both profiles (they're read-only by definition).


How it compares

Server

TW coverage

US coverage

Local

License model

Alpha Vantage MCP

⚠️ Delayed quotes only

✅ Full

❌ Cloud API

Pay per call

Financial Datasets MCP

❌ None

✅ Full

❌ Cloud API

Subscription

EODHD MCP

⚠️ EOD only

✅ Full

❌ Cloud API

Subscription

Lambda Finance

❌ None

✅ Full + options

❌ Cloud

Subscription

Stockflow (Yahoo)

⚠️ Spotty TW data

✅ Full

❌ Cloud

Free (rate-limited)

Stock Analyzer MCP

Deep TWSE + TPEx + institutional + chip

✅ Full

Local SQLite

One-time license (Lite free)

For non-Taiwan readers: Taiwan stock market has its own data ecosystem (TWSE, TPEx OpenAPI, three major institutional investors, monthly revenue reporting) that's nearly absent from English-speaking financial data platforms. If you want an AI agent that can answer "How are TSMC's institutional investors trading lately?" or "Find me TW small-caps with >30% YoY revenue growth", Stock Analyzer MCP is built for exactly this — deterministic TW chip/institutional/revenue tools that English-focused MCP servers generally lack.


Quickstart: Claude Desktop

1. Install Stock Analyzer

Get the free Lite tier from stockanalyzer.tw. Version 0.47.4-beta or later ships MCP server v1.2.0.

2. Configure Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "stock-analyzer": {
      "command": "/Applications/Stock Analyzer.app/Contents/Resources/app.asar.unpacked/bin/saa-mcp",
      "env": { "PORT": "3000" }
    }
  }
}

Why the wrapper? Running node mcp-server.js directly hits a better-sqlite3 ABI mismatch (the binding is compiled for Electron's Node, not the system's). The bin/saa-mcp wrapper auto-finds the SAA Electron runtime and runs the MCP server with ELECTRON_RUN_AS_NODE=1. Older configs that point to node will need updating.

3. (Optional) Restrict to read-only mode

If the LLM client isn't fully trusted (shared Claude project, third-party agent), add:

"env": { "PORT": "3000", "SAA_MCP_PROFILE": "safe_readonly" }

This blocks 15 write tools (add_trade, delete_trade, upsert_thesis, set_price_alert, etc.) but keeps all read tools + all 6 resources.

4. Fully restart Claude Desktop (cmd+Q then reopen)

5. Try it

"List all SAA stock-analyzer tools"

"Analyze 2330 — institutional flow last month + 3-month momentum + radar score + give me a buy/sell view"

"@saa://portfolio — what's my biggest concentration risk?"

"Compare 2330, 2454, and 3008 as candidates. Include their theses if they exist."

Claude will orchestrate multiple tool calls (or @-mentions for resources) and synthesize a research report.


Headline tools (2026-05-18)

🎭 research_stock_deep_dive — Premium tier

5 specialized AI agents debate in parallel:

  • 🐂 Bull (only sees evidence supporting an upside thesis)

  • 🐻 Bear (only sees evidence supporting a downside thesis)

  • 📰 Sentiment (news + social signals)

  • 🛡️ Risk (volatility, drawdown history, regime context)

  • 🎯 Synthesizer (sees all four; produces a 6-level action: strong_buyavoid)

Each agent uses a distinct subset of the 95 tools. Output includes per-agent reasoning + final action + confidence score. ~$0.16/call LLM cost (Anthropic Sonnet / OpenAI).

🌅 portfolio_daily_briefing — Lite tier

Pre-market or post-market portfolio briefing. Aggregates current holdings, unrealized P&L, sector exposure, relevant macro / institutional flow into an actionable summary.

  • mode='get' → reads the latest cached briefing (free, instant)

  • mode='generate' → runs a fresh one (~10-20s, ~$0.04/call LLM cost)

🔍 compare_investment_candidates — Lite, cost $0

Side-by-side deep analysis of 2-5 candidate stocks. Parallel fan-out of get_full_stock_analysis (fundamentals + technical + chip + institutional + levels) per candidate, plus existing thesis status. Deterministic — the agent sees raw evidence rather than an LLM-synthesized opinion, which empirically produces better reasoning.

📓 post_trade_review — Lite, cost $0

Past-N-days reflection. Aggregates analyze_trade_performance (FIFO P&L, win rate, hold time) + get_trade_journal (recent trades) + get_portfolio_signals (current state). Auto-detects observable patterns:

  • low_win_rate (< 40%) → systematic selection or timing problem

  • over_trading (avg hold < 5 days) → fees eating returns

  • lopsided_pnl (avg loss > avg win) → poor stop-loss discipline

Hands the agent objective indicators to write narrative review against.


Documentation

  • Full MCP usage guide (zh-TW + en): MCP-USAGE-GUIDE.md — Claude Desktop setup, troubleshooting, conversation examples

  • Launch blog post (bilingual): docs/mcp-launch-2026-05.md — context on the 2026 MCP finance landscape + why TW coverage was the gap

  • Tool reference: bundled inside the app at Settings → 🔌 MCP / Agent


Design philosophy

  • Local-first: All data lives in ~/.twse-analyzer/stock_history.db (SQLite, single file). MCP server runs in-process inside the Electron app via stdio transport.

  • BYOK LLM: SAA itself has an AI Hub that consumes the same 95 tools. Bring your own keys (Claude / GPT / Gemini / Ollama). The MCP server itself isn't tied to any LLM — it just exposes deterministic data + a few LLM-backed aggregators.

  • Transparent methodology: 16 bilingual methodology pages (zh-TW + en) explain every analytical tool's formula, data source, and limitations. Available at /methodology.html inside the app.

  • No active trading signals: Research output only — not order execution. Regulatory + product positioning decision.

  • Cost honesty: Every tool surfaces its worst-case LLM cost upfront via _meta.tw.stockanalyzer/estimated_cost_usd. No hidden cloud-API spend.


Versioning

The MCP server uses two version numbers:

Field

Meaning

Bump on

server_version

SAA MCP binary version (shown at initialize)

Each SAA app release

tools_schema_version (in saa://system/info)

Tool/resource shape version

Tool added/removed/renamed/required-changed

Rules:

  • patch — additive (new tool, new resource)

  • minor — new required param, new enum restriction, readOnlyHint change

  • major — rename, removal, required-keys change

Current: server 1.2.0, schema 1.2.0. Changelog inside mcp-server.js header.


License

This documentation repo is MIT licensed (see LICENSE). The Stock Analyzer app itself is closed-source commercial software.


Contact

Available Tools

85 tools
add_tradeA

新增一筆交易記錄到持倉(買入或賣出),執行前會請使用者確認。必填:stockId、market、action(buy/sell)、shares、price、tradeDate。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330
marketYesTW 或 US
actionYesbuy 或 sell
sharesYes股數(台股為整數張數×1000)
priceYes成交價格
tradeDateYes交易日期 YYYY-MM-DD
noteNo備註(選填)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the behavioral trait that it asks for user confirmation before executing. Annotations show readOnlyHint=false and destructiveHint=false, so no contradiction. However, it does not disclose other aspects like side effects, authorization needs, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose and required fields. It is efficient at two sentences, though it could be slightly more structured (e.g., separating required vs optional clearly).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters (6 required) and no output schema, the description covers basic purpose and confirmation step. However, it lacks information on return values, error scenarios, and differentiation from similar update mutation. It is adequate but has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description merely lists required parameters without adding extra meaning beyond what the schema already provides. No additional value in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: adding a trade record (buy or sell) to a position. It specifies the required fields and the action types, distinguishing it from siblings like delete_trade and update_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions user confirmation before execution, implying it is a cautious operation. However, it does not explicitly state when to use this tool vs. update_trade or other alternatives. The context is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_watchlistC

把股票加入關注清單。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketNoTW 或 US,預設 TW
display_nameNo顯示名稱(選填)
noteNo備註(選填)
tagsNo標籤陣列

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what the annotations already provide. Annotations indicate a non-read-only, non-destructive, non-idempotent operation, but the description does not clarify side effects, permissions, or limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but lacks structure. It does not front-load critical details or provide a clear separation of information, making it minimally acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and the presence of 5 parameters with only one required, the description is too brief to provide complete context. It does not explain whether multiple stocks can be added at once or any behavior regarding existing watchlist entries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all parameters, so the schema already does the heavy lifting. The description does not add any extra meaning or clarification beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('add stocks') and resource ('watchlist'), providing a specific verb+resource combination. However, it does not differentiate from sibling tools like 'update_watchlist' or 'remove_watchlist', which have similar names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description lacks information about prerequisites, such as needing an existing watchlist, or scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_sentimentA
Read-onlyIdempotent

分析指定股票的新聞情緒(看漲/看跌/中性),回傳情緒分數與摘要

ParametersJSON Schema
NameRequiredDescriptionDefault
stockNameYes股票名稱,例如「台積電」
stockCodeYes股票代號,例如 2330

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only, non-destructive, and idempotent. The description adds value by specifying the output format (sentiment score and summary), which is not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the tool's action and result. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return type (sentiment score and summary), which is adequate for a simple analysis. Could be improved by specifying score range.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters with examples. The tool description adds no additional meaning; it relies on the schema's coverage (100%).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool analyzes sentiment for a specified stock and returns a sentiment score and summary. It is specific about the resource (stock) and action (sentiment analysis). However, it does not explicitly distinguish it from sibling tools like 'get_stock_sentiment_v2'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when sentiment analysis for a specific stock is needed. No explicit guidance on when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_trade_performanceA
Read-onlyIdempotent

根據使用者實際交易紀錄做績效分析(回測的升級版):以 FIFO 配對買進/賣出,計算已實現損益、勝率、平均持有天數、平均單筆報酬、最佳/最差交易、每檔股票表現、未實現損益。比純粹看持倉損益更能回答「我的選股/擇時策略有效嗎」。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場 TW 或 US,不填則兩市場一起算
stockIdNo指定單一股票代號(選填)
startDateNo起始日期 YYYY-MM-DD(選填,預設不限)
endDateNo結束日期 YYYY-MM-DD(選填,預設今日)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds behavioral details (FIFO matching, metric calculations) beyond annotations which already indicate read-only and idempotent. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences covering purpose and value proposition with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description lists expected outputs and explains methodology, sufficient for a read-only analysis tool without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds minimal value beyond optionality hints. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool analyzes actual trade records using FIFO matching, calculates specific performance metrics, and distinguishes itself from backtesting and simple portfolio P&L analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies when to use (for evaluating actual trade strategy effectiveness) and contrasts with portfolio P&L, but lacks explicit alternatives or when-not-to-use guidance compared to sibling tools like backtest_strategy.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

backtest_multi_strategyA
Read-onlyIdempotent

對同一標的並排比較多個策略的表現(最多 6 個),一次看清哪個策略在這檔最適合。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketNo市場 TW 或 US,預設 TW
strategiesYes策略陣列,例如 ["rsi_oversold","ma_crossover","breakout"]
daysNo回測天數(預設 252)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds the behavioral constraint of up to 6 strategies, but does not explain the output format or what performance metrics are shown. This adds some value beyond annotations but not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose and includes the key constraint (up to 6 strategies). No wasted words; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (4 parameters, no output schema), the description covers the core purpose and constraints. However, it does not describe the return value or performance metrics, which could lead to ambiguity for an agent. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes all parameters. The description adds a marginal note that strategies are limited to 6 ('最多6個'), which provides a bit of extra meaning for the 'strategies' parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool compares the performance of multiple strategies (up to 6) for the same stock, which distinguishes it from related tools like backtest_strategy (single strategy) and backtest_grid_search (grid search over parameters). The verb 'compare' and resource 'strategies for a stock' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when comparing multiple strategies on one stock. The sibling tool name 'backtest_strategy' suggests it is for single strategy, providing implicit guidance. However, it does not explicitly state when not to use or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

backtest_strategyB
Read-onlyIdempotent

回測交易策略 — 用歷史數據驗證策略績效。支援策略:rsi_oversold(RSI超賣)、ma_crossover(均線交叉)、breakout(突破)、mean_reversion(均值回歸)

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330
strategyYes策略名稱: rsi_oversold, ma_crossover, breakout, mean_reversion
daysNo回測天數,預設 252(一年)
marketNo市場 TW 或 US,預設 TW

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral context beyond stating it uses historical data. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: one for purpose, one for strategy list. No wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description does not explain what the tool returns (e.g., performance metrics). For a backtesting tool, this is a critical omission, making the description incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all parameters. The description lists the strategy options but adds no further meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: backtesting trading strategies with historical data. It lists the supported strategies, distinguishing it from sibling tools like backtest_grid_search and backtest_multi_strategy which are more specialized.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. It does not mention limitations, prerequisites, or when not to use. For a tool with multiple backtesting siblings, this is a significant gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_dcfA
Read-onlyIdempotent

DCF 估值計算器。依使用者輸入的 FCF、成長率、折現率、永續成長率計算企業合理價值與每股內在價值。若未提供參數,會從資料庫推估合理預設值(FCF 以年化 EPS×流通股數×0.8 作代理)。回傳企業價值、每股內在價值、對現價的安全邊際。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330
marketNo市場 TW 或 US,預設 TW
fcfNo當前年度 Free Cash Flow(元);未提供則用 EPS×Shares×0.8 代理
growthRateNo短期年成長率 (小數,例如 0.08 表示 8%);未提供則用營收 YoY 平均
yearsNo預測年數,預設 5
terminalGrowthNo永續成長率 (小數),預設 0.025
discountRateNo折現率 WACC (小數),預設 0.09
sharesOutstandingNo流通在外股數;未提供則用 market_cap/price 推算
netCashNo淨現金(現金−負債,元),預設 0
includeSensitivityNo是否回傳 5×5 敏感度表(折現率×永續成長率),預設 false

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only, non-destructive, idempotent behavior. The description adds context by detailing the default estimation logic (e.g., FCF proxy as EPS×Shares×0.8), which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences efficiently convey purpose, inputs, defaults, and outputs. Front-loaded with the main purpose. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all essential aspects: what the tool does, what parameters are used, how defaults work, and what the output includes (enterprise value, intrinsic value, margin of safety). No output schema, but description adequately describes outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage for all 10 parameters. The description adds value by explaining how defaults are derived when not provided, but the schema already handles individual parameter meaning well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it is a DCF valuation calculator that computes enterprise value and intrinsic value per share using FCF, growth rate, discount rate, and terminal growth. It distinguishes itself from siblings by being the only dedicated DCF tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains that calculations are based on user inputs and that default values are estimated from the database if not provided. While it doesn't explicitly say when not to use or compare to alternatives, the context makes its purpose clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_portfolio_varA
Read-onlyIdempotent

計算投資組合的風險值 (Value at Risk),包含歷史 VaR、參數 VaR、條件 VaR (Expected Shortfall),以及各持股的風險貢獻度

ParametersJSON Schema
NameRequiredDescriptionDefault
confidenceNo信心水準,0.90 或 0.95 或 0.99,預設 0.95
horizonNo持有期間(天),預設 1

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent. The description adds detail about the computed outputs (VaR types and risk contributions), providing additional behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the primary purpose and enumerates outputs concisely, though it could be structured with bullet points for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the return values (VaR metrics and risk contributions) sufficiently given no output schema. It does not mention input prerequisites like portfolio existence, but this is implied by the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides full coverage and descriptions for both parameters (confidence level and horizon). The tool description does not add any further parameter semantics, resulting in baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates portfolio Value at Risk, listing specific types (historical, parametric, conditional) and risk contribution, effectively distinguishing it from sibling portfolio tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for risk calculation but does not explicitly state when to use this tool versus alternatives like get_portfolio_performance or get_portfolio_concentration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_alertA
Destructive

取消一筆股價/條件提醒(用 id)。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesalert id

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description matches annotations (destructiveHint=true), but adds no behavioral details beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loads purpose with no wasted words. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter and no output schema, the description sufficiently covers what the tool does and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameter information with 'alert id'. Description doesn't add extra meaning beyond 'by id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'cancel' and resource 'alert' (股價/條件提醒) with scope 'by id'. It distinguishes from siblings like set_price_alert and list_alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when you want to cancel an alert, but no explicit guidance on when to use vs alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_investment_candidatesA
Read-onlyIdempotent

並排比較 2-5 檔候選投資標的的深度分析(升級版 compare_stocks — 後者只看 PE/PB/殖利率,這裡跑 get_full_stock_analysis 拿到 price/technical/chip/fundamentals/levels/institutional/news 全套)+ 自動帶出每檔現有 thesis 狀態。不打 LLM(cost=$0),純粹並行 fetch + 結構化;agent 自己看 raw evidence 做 reasoning,token-effective 且避免 LLM-synthesized bias。

ParametersJSON Schema
NameRequiredDescriptionDefault
codesYes股票代號(逗號分隔,2-5 檔),例如 2330,2454,3008
marketNo市場 TW 或 US,預設 TW
include_thesisNo是否帶出每檔的現有 thesis(投資論點)狀態 — 預設 true
include_newsNo是否含最近 news — 預設 false(news 量大,token 重)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds key behavioral info beyond annotations: it discloses no LLM usage (cost=0), parallel fetch, and token-effective structured output, which are not in annotations. It also explains internal invocation of get_full_stock_analysis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but packs essential information efficiently. It could be more structured (e.g., bullet points) but remains clear and front-loads the main purpose and distinction from compare_stocks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers the tool's internal behavior, parameter usage, and comparison scope. It lacks explicit return format details, but the agent can infer from parameter descriptions and the context of structured data fetch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions. The description adds context: it implies default for include_thesis is true and include_news is false, and reinforces that codes expect 2-5 stocks. This adds semantic value beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it compares 2-5 investment candidates with deep analysis, contrasting with compare_stocks which only covers PE/PB/dividend yield. It specifies the resources (get_full_stock_analysis) and additional thesis status, making the purpose distinct among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (for deep comparison) and contrasts with compare_stocks, providing context. It also mentions parameters like include_news and include_thesis, but lacks explicit when-not-to-use or alternatives beyond compare_stocks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_stocksA
Read-onlyIdempotent

並排比較多檔股票的關鍵指標:股價表現、本益比(PE)、股價淨值比(PB)、股息殖利率,快速找出相對便宜或強勢的標的

ParametersJSON Schema
NameRequiredDescriptionDefault
codesYes股票代號(逗號分隔,2-5 檔),例如 2330,2454,2317
marketNo市場 TW 或 US,預設 TW

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the safety profile is clear. The description adds behavioral context about the specific indicators compared but does not disclose data source, freshness, limits, or output format beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with purpose. It could be more structured (e.g., bullet points), but remains efficient with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With two straightforward parameters and no output schema, the description adequately captures what the tool does. It does not describe return structure, which would be helpful, but the core functionality is complete for an agent to decide usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for 'codes' and 'market'. The description adds the specific indicators compared, which is not in the schema, enriching the semantics beyond the parameter names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it compares multiple stocks' key indicators (price performance, P/E, P/B, dividend yield) to find cheap or strong targets. It uses a specific verb and resource, distinguishing it from single-stock tools like get_stock_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for comparing multiple stocks, but does not explicitly state when to use this tool versus siblings or provide when-not guidance. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_analysis_workflowA
Read-onlyIdempotent

一鍵執行完整個股研究工作流:並行取得即時報價、技術指標、籌碼面、基本面、交易價位、法人動態,一次拿到所有投資決策所需資料。比逐一呼叫各工具更高效,適合「幫我完整分析 2330」此類請求。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號,例如 2330
marketNo市場 TW 或 US,預設 TW
stepsNo指定步驟(選填):price, technical, chip, fundamentals, levels, institutional, news

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

注释已表明只读、非破坏性和幂等性,描述在此基础上补充了并行执行和综合获取数据的行为特征,增加了透明度。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

描述仅用两句话就涵盖了功能、效率优势和适用场景,信息密度高且首句直接点明核心,结构紧凑。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

在无输出模式的情况下,描述虽未明确返回格式,但说明了工具能获取所有投资决策所需资料,对于复杂的组合工作流而言已较为全面,但仍可考虑补充错误处理或结果结构信息。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

输入模式已经对每个参数有完整描述(代码、市场、步骤),描述中重复了步骤的枚举值但未添加超出模式的语义信息,因此未显著提升参数理解。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

明确说明了工具的功能是执行完整的个股研究工作流,并在描述中列出获取的数据类型(报价、技术指标等),同时通过与逐一调用其他工具的对比强调其高效性,有助于区分于其他工具。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

描述给出了具体的使用场景示例(‘帮我把 2330 完整分析’),并提示比逐一调用更高效,但未明确说明何时不应使用或与其他组合工具(如 get_full_stock_analysis)的区别。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_thesisA
Destructive

永久刪除某檔股票的投資論點(無法復原;非必要請改用 invalidate_thesis)。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketYesTW 或 US

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as destructive; description adds 'cannot be restored', reinforcing the irreversible nature. Good context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys purpose, irreversibility, and alternative. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, destructive annotation, and a description covering effect and alternative, all essential information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (stockId, market). Description adds no extra detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it permanently deletes a stock's investment thesis, and explicitly distinguishes from the sibling tool 'invalidate_thesis'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to use 'invalidate_thesis' instead if permanent deletion is not necessary, providing clear when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_tradeA
Destructive

刪除一筆已存在的交易紀錄(依 transaction id)。執行前會請使用者確認。此操作不可逆。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes交易 id(必填);可從 get_trade_journal 取得

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by stating that confirmation is obtained before execution and that the operation is irreversible. This aligns with the destructiveHint annotation and provides additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with only two sentences, no unnecessary words, and each sentence serves a distinct purpose (definition and behavioral note).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter and no output schema, the description is complete: it explains what it does, what parameter is needed, where to get it, and important behavioral notes (confirmation, irreversibility).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter 'id' is clearly described with its source (get_trade_journal), adding meaning beyond the schema which only specifies it's required and of type number. This helps the agent correctly obtain the ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete an existing trade record) and specifies the identifier (transaction id). It effectively distinguishes from sibling tools like add_trade and update_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates that user confirmation is required and the operation is irreversible, providing clear usage guidance. However, it does not explicitly mention when not to use or suggest alternatives like update_trade.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_kline_patternsA
Read-onlyIdempotent

偵測股票 K 線型態(錘子、吞噬、晨星、暮星、三白兵、三黑鴉等 13 種常見反轉/持續型態)。回傳最近出現的型態清單及各自方向與信心值。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330
marketNo市場 TW 或 US,預設 TW
daysNo檢視天數,預設 60
minConfidenceNo信心值下限 0-1,預設 0.6

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that it returns a list of recent patterns with confidence, but does not disclose limitations or side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core functionality. It is concise without superfluous information, though it could be more structured with explicit sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool lacking output schema, the description explains that it returns a list of patterns with direction and confidence. It names 13 common patterns, aiding the agent's understanding. Parameters are well-documented in schema, so the description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all 4 parameters with descriptions (stockId, market, days, minConfidence). The tool description does not add extra parameter details, but provides context about pattern types and output, which slightly supplements schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool's purpose: detecting candlestick patterns (e.g., hammer, engulfing, etc.) and returning a list with direction and confidence. It lists specific pattern types and is distinct from sibling tools, which focus on other analyses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria. Usage is implied by the nature of the tool, but no guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_abnormal_blocksA
Read-onlyIdempotent

取得近期異常鉅額交易清單 — 大戶或法人的大額買賣訊號

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds the term 'recent' but lacks precision on time range, data freshness, or pagination. With annotations, the marginal value is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear structure: verb (取得), object (異常鉅額交易清單), and qualifier (近期). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is adequate but could clarify 'recent' (e.g., last 24 hours) and whether the list is sorted. It covers the essential purpose but lacks nuance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, so schema coverage is 100%. The description does not need to explain parameters. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves a list of recent abnormal block trades, specifying it involves large buy/sell signals from institutional investors. This is specific and distinguishes it from sibling tools like get_volume_analysis or get_chip_flow_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Sibling tools include many other get_* functions, but the description does not explain scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chip_flow_overviewA
Read-onlyIdempotent

取得個股完整籌碼面概覽:融資融券餘額/使用率、鉅額交易、內部人持股異動(資料來源:Solo Market Database)

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes台股代號,例如 2330
daysNo查詢天數,預設 30

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations confirm read-only, non-destructive, idempotent behavior. The description adds value by specifying data source and included data types (margin, block trades, insider changes), giving agents a clear idea of what the call involves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence in Chinese, front-loading the verb and resource. It efficiently lists the data types included, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, so the description carries the burden of explaining return values. While it lists the main data categories, it lacks details on response format, pagination, or ordering, leaving some gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already provides 100% coverage with descriptions for both parameters (stockId and days). The tool description does not add further semantic meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a complete chip flow overview, listing specific data types (margin, block trades, insider changes). It distinguishes from siblings like 'get_margin_ranking' by covering a broader set of chip-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusion criteria. It only states what the tool does, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dividend_infoB
Read-onlyIdempotent

取得股票的殖利率現況、歷史殖利率趨勢、近期除息事件,評估股息投資價值

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and idempotentHint. The description adds minimal extra behavioral context, such as listing the types of data retrieved. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key actions, no redundancy. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with one parameter, the description covers the main purpose and data types. Without an output schema, it gives sufficient context, though details like response format are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description covers the single parameter 'code' adequately. The description does not add further semantic meaning beyond the schema, so score is at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves dividend-related data (current yield, historical trends, ex-dividend events) for a specific stock code. It is specific enough to distinguish from siblings like get_stock_price, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description lacks context about prerequisites, limitations, or recommended use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earnings_calendarA
Read-onlyIdempotent

取得財經事件行事曆:法說會、財報發佈、股利發放、除權息日等重大事件。適合回答「近期有哪些重要財報」「這週有什麼大事件」。

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNo起始日期 YYYY-MM-DD,預設今日
toNo結束日期 YYYY-MM-DD,預設 14 天後
marketsNo市場篩選,TW 或 US 或空白(兩個)
importanceNo重要性最低門檻(0=全部 / 1=中 / 2=高),預設 0

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and read-only. Description adds context about the types of events included, which is beneficial and does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loaded with main purpose and relevant query examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately describes the scope of events, but no output schema is provided, and the description does not detail return format. Still sufficient for a calendar tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds no additional meaning beyond what the schema already provides for parameters. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves a financial events calendar including earnings calls, financial reports, dividends, and ex-dividend dates. However, it does not explicitly differentiate from sibling tools like get_financial_events or get_dividend_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes examples of user queries it answers, implying when to use, but lacks explicit guidance on when not to use or what alternatives exist among many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_etf_holdingsA
Read-onlyIdempotent

取得 ETF 的前十大持股

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesETF 代號,例如 0050.TW 或 SPY

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds the scope 'top ten holdings' which is beyond annotations but does not disclose other behavioral traits like potential output format or limits. With annotations present, the bar is lower; description adds some value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that is front-loaded with key information. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no output schema, annotations present), the description sufficiently explains what it does. It could optionally mention return format, but it's not critical for a straightforward top holdings retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'symbol' with a clear example. The description does not add further meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description specifies the exact action (取得), resource (ETF holdings), and scope (前十大持股), distinguishing it from other data retrieval tools like get_dividend_info or get_earnings_calendar. It is concise and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. However, the name and description clearly indicate it's for ETF top holdings, providing implicit context. Agent can infer usage but no exclusion criteria or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exchange_rateA
Read-onlyIdempotent

查詢台幣對美元匯率,用於跨市場投資組合統一計價

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNo來源幣別,預設 USD
toNo目標幣別,預設 TWD

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, fully covering safety. The description adds no further behavioral context (e.g., data freshness, rate limits), but given annotation completeness, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence in Chinese, concise and front-loaded with purpose. Every word is informative with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (2 optional params, no output schema, strong annotations), the description provides sufficient context for a read-only query tool. No gaps in usage guidance or behavioral expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers both parameters with enums and descriptions, achieving 100% coverage. The description does not add additional parameter meaning beyond the schema, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states the verb (query), resource (exchange rate), and specific currency pair (TWD to USD). It also provides a usage context (cross-market portfolio pricing), clearly distinguishing it from sibling tools like get_price_history or get_us_stock_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for unified portfolio pricing, giving a clear use case. However, it does not explicitly state when not to use or mention alternative tools, though no direct sibling covers exchange rates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fed_policy_stanceA
Read-onlyIdempotent

判讀 Fed 當前貨幣政策立場(緊縮/中性/寬鬆)與近 6 個月趨勢(升息/持平/降息),基於 FRED 的 DFF(聯邦基金有效利率)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the data source (FRED DFF), but does not disclose methodology, data freshness, or error handling. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence clearly stating purpose and data source. No wasted words; front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no parameters and annotations present, the description is fairly complete. It explains the tool's output and basis. Could mention output format, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is trivially 100%. The description does not need to add parameter info. Baseline for 0 params is 4, and no additional value is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool interprets Fed's monetary policy stance (tight/neutral/loose) and 6-month trend based on FRED's DFF rate. The verb '判讀' (interpret) and specific resource differentiate it from sibling tools like get_macro_series.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for derived analysis of Fed policy, but does not mention exclusions or when to choose other macro tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_eventsB
Read-onlyIdempotent

取得股票的財務事件(除息日、法說會、財報發布日等)

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes股票代號(美股直接代號,台股加 .TW 後綴)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds the types of events included, which is useful context. It does not disclose further traits like pagination, date range, or limits, but annotations cover the safety profile adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately conveys the purpose and includes examples in parentheses. Every word adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and rich annotations, the description is fairly complete. It could mention the output format or whether it returns a list, but the absence of an output schema makes this less critical. Overall, it provides sufficient context for an agent to use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'symbol' has full schema description coverage (100%), so the schema already explains the expected format. The tool description adds no additional parameter information beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves financial events for stocks with specific examples (ex-dividend, investor conference, earnings release). However, it does not explicitly differentiate from similar sibling tools like get_dividend_info or get_earnings_calendar, which could overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., for specific events like dividends or earnings, more specific tools exist). The description implies general use but lacks contextual cues or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_statementsB
Read-onlyIdempotent

取得台股公司的基本面財務數據:月營收、每股盈餘(EPS)、本益比(PER)、殖利率、股價淨值比等

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330
typeNo資料類型: revenue(月營收)、eps(每股盈餘)、valuation(估值指標),預設 valuation

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate safe read operation. Description only lists data types but does not add behavioral context such as data source, update frequency, or pagination. Minimal additional value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence efficiently conveys core purpose. However, the list of metrics is dense; could be more readable with bullet points. Overall compact and direct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not specify return format (e.g., historical vs. single value, time range). For a data retrieval tool, missing details on output structure hinder completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description reiterates the 'type' parameter options, adding slight context but no new semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves fundamental financial data for Taiwanese stocks, listing specific metrics (monthly revenue, EPS, PER, yield, P/B). Distinguishes from siblings like get_monthly_revenue or get_stock_eps by offering a consolidated view.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description does not explicitly state when to use this tool over siblings like get_fundamentals_from_db or get_stock_eps. Usage is implied but lacks guidance on context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_full_stock_analysisA
Read-onlyIdempotent

一次取得個股完整分析資料:即時報價+技術指標(RSI/MACD/KD/布林)+三大法人+月營收+新聞情緒。適合「幫我完整分析 XXXX」類型的問題。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330
marketNoTW 或 US,預設 TW

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the scope of data fetched (multiple sources), but does not disclose additional behavioral traits such as rate limits or data freshness. The added value is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the main purpose and list components. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple two-parameter schema and rich annotations, the description is largely complete. It could briefly mention the output structure since no output schema is provided, but the listed components give sufficient context for an AI agent to understand the tool's coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters already documented. The description provides no additional parameter details beyond the schema. Baseline score of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches comprehensive stock analysis data including quotes, technical indicators, institutional investors, monthly revenue, and news sentiment. It distinguishes from sibling tools by explicitly listing the combined data sources and targeting 'complete analysis' queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions suitability for 'help me fully analyze XXXX' type questions, providing clear context for when to use this tool. However, it does not explicitly state when not to use it or name alternative tools for more specific queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundamentals_from_dbA
Read-onlyIdempotent

從本地資料庫取得台股基本面數據(月營收、季度EPS、估值指標),比即時 API 更穩定完整

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes台股代號,例如 2330
typeNo資料類型: revenue(月營收)、eps(季度EPS)、valuation(估值)、all(全部),預設 all

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. The description adds context about local database and stability, which is useful but does not detail behavioral traits like data freshness or failure handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is efficient and front-loaded with purpose and key benefit, but could use structure for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple read-only tool, but lacks details on output format, completeness definition, and any performance guarantees.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and describes both parameters well. The tool description reiterates the data types but adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves Taiwan stock fundamentals (monthly revenue, quarterly EPS, valuation metrics) from a local database, explicitly distinguishing itself from real-time APIs and sibling tools that focus on individual data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage when more stable and complete data is needed compared to real-time APIs, but lacks explicit when-not-to-use or alternative tools among siblings like get_monthly_revenue or get_stock_eps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fund_flow_sankeyA
Read-onlyIdempotent

取得三大法人資金按產業細分的詳細流向,可指定外資/投信/自營商,顯示各投資人對每個產業的具體買賣超金額。適合深入分析特定投資人的產業佈局。

ParametersJSON Schema
NameRequiredDescriptionDefault
investorNo法人類型: all, foreign, trust, dealer,預設 all
topNNo顯示前 N 大產業,預設 10

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is clear. Description adds context about returning detailed flows per industry but does not disclose limitations like time range or data format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines purpose, second states use case. No wasted words; clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only tool, the description covers purpose, scope, and intended use sufficiently. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description restates the enum values (foreign, trust, dealer) and topN purpose. Adds marginal value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves detailed fund flows of three major institutional investors (foreign, trust, dealer) broken down by industry, distinguishing it from sibling tools like get_institutional_flow which likely provide aggregated views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for in-depth analysis of specific investors' industry positioning ('適合深入分析特定投資人的產業佈局'), but does not explicitly state when to avoid this tool or compare with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insider_alertsA
Read-onlyIdempotent

取得內部人(董監事/大股東)近期大量賣出警示

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds 'recent large sell alerts' but no further behavioral traits beyond that. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence front-loading the tool's purpose with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but simple tool. Description lacks details on timeframe, thresholds, or data freshness. Adequate for a basic tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 as per rules. Description doesn't need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves insider large sell alerts, specifying the resource (insiders) and action (get). It is distinct from siblings like get_news or get_stock_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of context or exclusions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_institutional_flowA
Read-onlyIdempotent

取得今日台股三大法人整體概況:外資、投信、自營商合計買賣超金額,以及各產業淨流向排名。適合快速掌握大盤法人動態。

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo查詢日期 YYYYMMDD 格式,預設最近交易日

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds no further behavioral traits beyond what annotations convey. It is consistent and does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the essential purpose and is front-loaded. Every part is meaningful and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and clear annotations, the description provides adequate context about the returned data (buy/sell amounts and industry ranking). No output schema is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single optional 'date' parameter, with a description in the schema. The tool description does not add additional parameter semantics, but the schema is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the overall institutional flow of Taiwan stocks (foreign, investment trusts, dealers) and net flow ranking by industry. It provides a specific verb and resource, but does not explicitly differentiate from sibling tools like get_market_overview or get_sector_ranking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions suitability for quickly grasping market institutional dynamics, which implies a use case but lacks explicit guidance on when to use versus alternatives, or when not to use. No comparison with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_employmentA
Read-onlyIdempotent

取得美國就業市場數據:非農就業、失業率、勞動參與率及趨勢。就業數據是 Fed 雙重使命之一,直接影響升降息預期。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by specifying the exact data points (non-farm payrolls, unemployment rate, etc.) and explaining the impact on Fed interest rate expectations, which provides useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences, covering both the data provided and its significance. Every sentence is meaningful and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately explains what data is retrieved and why it matters. Minor gap: the format of the output is unspecified, but for a simple read tool this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is effectively 100%. The description does not need to add parameter information. According to calibration guidelines, 0 parameters warrants a baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves US employment market data including specific metrics (non-farm payrolls, unemployment rate, labor participation rate, trends). The verb '取得' (get) and resource are explicit, and the tool is well-distinguished from siblings like get_macro_inflation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for employment data related to Fed policy but does not provide explicit guidance on when to use this tool versus alternatives such as get_macro_snapshot or get_macro_series. No when-not or alternative naming is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_inflationA
Read-onlyIdempotent

取得美國通膨數據:CPI、核心 CPI、PCE、核心 PCE 的最新值、年增率與趨勢方向。通膨是判斷 Fed 政策走向與股市估值的關鍵指標。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations confirm read-only and idempotent behavior. The description adds value by specifying the output content (latest values, YoY growth, trend direction). No contradictions. Some missing details like update frequency or data source, but annotations already cover safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded: first sentence lists what it returns, second gives context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only tool without an output schema, the description adequately explains the return value (components and metrics). It is sufficient for understanding what data to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100%. Per guidelines, baseline is 4. The description does not need to add parameter info, and none is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: retrieving US inflation data including CPI, Core CPI, PCE, and Core PCE with latest values, YoY growth, and trend direction. It distinguishes itself from sibling macro tools by focusing specifically on inflation metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use the tool by stating inflation is key for Fed policy and stock valuation. However, it does not explicitly instruct when not to use or compare it to alternatives like get_macro_employment or get_macro_series.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_seriesA
Read-onlyIdempotent

取得 FRED(聯準會)特定總經時間序列的歷史數據,例如 10 年期公債殖利率(DGS10)、聯邦基金利率(FEDFUNDS)、M2 貨幣供給(M2SL)、CPI(CPIAUCSL)等。適合深入分析單一宏觀指標的歷史走勢。

ParametersJSON Schema
NameRequiredDescriptionDefault
seriesIdYesFRED 序列代號,例如 DGS10(10年利率)、FEDFUNDS(基準利率)、CPIAUCSL(CPI)、M2SL(M2)、UNRATE(失業率)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that the tool retrieves historical data, which is consistent. No new behavioral traits beyond annotations are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise and front-loaded with the main action and examples. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, full schema coverage, and annotations, the description is largely complete. It could mention output format or limitations like date range, but the tool is simple and the description covers essential usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully describes the single parameter (seriesId) with examples. The description repeats some examples but adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves historical FRED macro time series for a single indicator, with examples. However, it does not explicitly distinguish itself from similar siblings like get_macro_employment or get_macro_snapshot, which might also provide indicator data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for in-depth historical analysis of a single indicator, but does not specify when not to use it or mention alternative tools. No exclusion criteria or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_snapshotA
Read-onlyIdempotent

取得美國總體經濟快照(FRED 資料):10 年期公債殖利率、Fed Funds、CPI YoY、失業率、美元指數、VIX。用於判讀總經環境、跨資產情境、Risk-on/off 切換

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, establishing safety. The description adds context by specifying the data source (FRED) and the exact indicators returned, which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and lists indicators efficiently. Every word adds value, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only tool, the description adequately covers the output (specific indicators) and purpose. It lacks details on time range or update frequency, but given low complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, so baseline is 4. The description fully compensates by detailing what the snapshot contains, making the tool's behavior clear without needing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool's purpose: getting a US macroeconomic snapshot from FRED, listing specific indicators (10-year yield, Fed Funds, CPI YoY, unemployment, USD index, VIX). This distinctly differentiates it from sibling tools like get_macro_employment or get_macro_inflation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for interpreting macro environment and risk-on/off switching, but does not explicitly state when to use this tool versus alternatives like get_macro_employment or get_macro_series. Lack of exclusions or when-not-to-use guidance makes it adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_margin_rankingA
Read-onlyIdempotent

取得全市場融資使用率排行 — 高融資使用率是潛在風險訊號

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo回傳前 N 檔,預設 20

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and idempotentHint. The description adds behavioral context by noting that high margin usage is a risk signal, which helps the agent 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys purpose and significance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description fully covers the tool's behavior and purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional parameter 'limit' is well-documented in the schema (100% coverage). The description adds no further parameter details, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a ranking of margin usage rate across the entire market, and it distinguishes from sibling tools like get_market_heatmap or get_sector_ranking by focusing specifically on margin usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for risk assessment but does not explicitly state when to use or when not to, nor does it reference alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_heatmapA
Read-onlyIdempotent

取得台股市場熱力圖數據,按產業分組顯示各股漲跌幅與成交量

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場: tw 或 us,預設 tw

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no additional behavioral traits beyond confirming a read operation. No side effects or authorization needs are mentioned, but annotations cover the safety profile adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that includes all key information: verb, resource, grouping, and displayed data. No wasted words, and the action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the main output (heatmap, industry grouping, price change and volume), it is inconsistent with the schema: the description says 'Taiwan stock market' but the schema allows 'us' market. This reduces completeness. Also, no output schema exists, so the description is the sole guide to return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the 'market' parameter as '市場: tw 或 us,預設 tw'. The tool description adds no further meaning to the parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves market heatmap data for Taiwan stocks, grouped by industry, showing price change and volume. It is specific with a verb and resource, and distinguishes from sibling tools like 'get_market_overview'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as 'get_sector_ranking' or 'get_market_overview'. The description does not mention any exclusion criteria or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_overviewA
Read-onlyIdempotent

取得大盤綜覽:三大法人整體動態+類股強弱排名+系統性風險指數+匯率。適合「今天大盤如何?」類型的問題。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, read-only operation. The description adds value by enumerating the specific components returned (institutional dynamics, sector ranking, etc.), which enhances understanding of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence in Chinese that immediately states the tool's purpose, lists its outputs, and provides a usage example. Every element earns its place, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description covers the key aspects: what the tool returns and when to use it. It is sufficient for an overview tool, though additional format details could enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no properties, so there are no parameters to document. According to the guidelines, 0 parameters yields a baseline of 4. The description does not need to add parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool provides a market overview including three major institutional dynamics, sector strength ranking, systemic risk index, and exchange rate. It is explicitly distinguished from siblings by listing specific outputs, and the example usage '今天大盤如何?' clarifies the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that the tool is suitable for questions like 'How is the market today?', providing clear context for when to use it. It does not explicitly mention alternatives or exclusions, but the context is obvious among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_sentimentA
Read-onlyIdempotent

取得市場情緒分析(結合 FinBERT 新聞情緒、法人動向),回傳情緒指數(0-100)和各來源細項。比 analyze_sentiment 更精確

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場: TW 或 US,預設 TW

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, and idempotentHint. The description adds behavioral context: it combines specific data sources (FinBERT and institutional movements) and returns a structured index and breakdown, providing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences, front-loading the action and result. Every part is informative and not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description provides complete context: what it does, what it returns, and how it compares to a sibling. No gaps for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage for the single parameter 'market', the baseline is 3. The description does not add extra semantic meaning beyond what the schema already provides (market: TW or US).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to get market sentiment analysis using FinBERT news sentiment and institutional movements, returning a sentiment index (0-100) and breakdown by source. It also distinguishes itself from the sibling 'analyze_sentiment' by claiming higher accuracy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly compares this tool to 'analyze_sentiment', suggesting it is more accurate, which guides when to use it over that alternative. However, it does not mention other potential alternatives or exclusions, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_monthly_revenueA
Read-onlyIdempotent

取得台股個股月營收資料,包含年增率(YoY)、月增率(MoM),分析營收成長趨勢

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330
monthsNo查詢月數,預設 12

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds the specific data fields (YoY, MoM) but no further behavioral details like data freshness or market-specific constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence efficiently conveys the purpose and key outputs without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers main output but lacks details on data source, update frequency, or limitations (e.g., Taiwan-specific). No output schema exists, so more description text would help completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers 100% of parameters (code, months) with clear descriptions. Description does not add meaning beyond the schema, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves monthly revenue data for Taiwan stocks (台股) with YoY and MoM growth rates, distinguishing it from siblings like get_price_history or get_financial_statements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Context signals imply read-only use, but no exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newsA
Read-onlyIdempotent

搜尋股票或主題的相關新聞

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes搜尋關鍵字,例如「台積電」、「AI伺服器」

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no further behavioral details beyond the search purpose, which is adequate given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence in Chinese, front-loading the essential purpose with no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search tool with one parameter and no output schema, the description sufficiently conveys the purpose. Minor improvement could explicitly state that it returns news articles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions in the input schema. The tool description does not add new information about parameters beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '搜尋股票或主題的相關新聞' clearly defines the tool's action (search) and resource (news related to stocks or topics), distinguishing it from sibling tools that focus on specific financial data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. No explicit context for optimal usage or exclusions is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pnl_realizedA
Read-onlyIdempotent

取得已實現損益報告:每檔股票的已結算獲利/虧損金額、報酬率、持有天數。適合回答「我賺錢的股票有哪些」「哪些交易虧了多少」。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場篩選 TW 或 US,空白則兩個市場都回傳

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds no extra behavioral context beyond the returned fields. It does not contradict annotations, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a clear structure: purpose, returned information, and example use cases. Every part adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description provides enough context: it lists returned fields and example queries. It could mention data scope (e.g., all-time vs. date range) but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter. The description adds no additional meaning beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a realized profit/loss report per stock with specific fields (settled amount, return rate, holding days). It also provides example queries, making the purpose distinct from sibling tools like get_portfolio or get_portfolio_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions suitable use cases (e.g., 'Which stocks made money?') but does not explicitly state when to use this tool over alternatives or when not to use it. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolioA
Read-onlyIdempotent

取得使用者的投資組合(持股明細、成本、現值、損益)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral context (e.g., authorization needs, rate limits). Since annotations cover safety, this is acceptable but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. Every part contributes to understanding the tool's purpose and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless read-only tool, the description fully covers what the tool does and what it returns. No output schema exists, but the description lists the key output components, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description compensates by explaining the return value components (holdings, cost, value, P&L), adding meaning beyond the empty schema. Baseline for 0 params is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the user's portfolio with specific details (holdings, cost, current value, P&L). It uses a specific verb 'get' and resource 'portfolio', distinguishing it from sibling tools like get_portfolio_concentration or get_portfolio_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description (retrieve overall portfolio), but there is no explicit guidance on when to use this tool versus alternatives like get_portfolio_performance or get_portfolio_concentration. No 'when not to use' or alternative tool names are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolio_concentrationA
Read-onlyIdempotent

分析目前投資組合的集中度風險,回傳 Herfindahl 指數、前 N 大部位佔比、集中度警示與建議(例如單一股票占比過高)。資料來自使用者實際持股,以台幣計價。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNo前 N 大部位要呈現(1-20,預設 5)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark the tool as read-only and idempotent. The description adds value by detailing the outputs (Herfindahl index, top N, alerts) and confirming data source and currency, providing behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the core purpose and outputs. No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the absence of an output schema, the description adequately explains inputs, outputs, and data source. No additional clarifications needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter topN is fully described in the schema (range 1-20, default 5). The description does not add extra semantic meaning beyond the schema, achieving baseline coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool analyzes portfolio concentration risk and returns specific metrics (Herfindahl index, top N positions, alerts). It distinguishes itself from sibling portfolio tools by focusing specifically on concentration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool uses actual holdings in TWD but does not explicitly specify when to use it over alternatives like get_portfolio or get_portfolio_score. Usage context is implied but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolio_performanceA
Read-onlyIdempotent

取得投資組合的完整績效曲線與統計指標:總報酬率、CAGR、最大回撤、夏普比率、波動度、勝率;並附上與台股大盤(TWII)、S&P500、散戶指數的比較曲線及每筆交易標記。適合回答「我的整體投資績效如何」「跑贏大盤了嗎」。

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo回顧天數,252=1年 / 504=2年 / 1008=4年 / 2520=10年 / 5000=全部;預設 2520
benchmarkNo是否附上基準比較曲線,預設 true

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and the description adds valuable behavioral context: it returns a full performance curve, statistical metrics, and benchmark comparisons with trade markers. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: first lists metrics, second mentions comparisons, third gives use cases. Front-loaded with essential information. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 optional params, no output schema, and annotations covering safety, the description is largely complete. It could be enhanced by noting the time-series nature of the output, but the current detail supports correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds meaning by explaining that benchmark includes TWII, S&P500, and 散戶指數, and the default days value. This goes beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves portfolio performance metrics (total return, CAGR, max drawdown, Sharpe, volatility, win rate) and benchmark comparisons. It includes example questions to illustrate usage, distinguishing it from sibling tools like get_portfolio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use-case examples ('適合回答「我的整體投資績效如何」「跑贏大盤了嗎」') that guide when to invoke. However, it does not mention when not to use or directly reference sibling alternatives, which would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolio_scoreA
Read-onlyIdempotent

取得投資組合綜合評分與投資人等級(新手/穩健/進階/專業),以及多個維度的量化指標。可讓 LLM 瞭解用戶投資水準,調整建議深度與語氣。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the tool is clearly non-destructive and safe. The description adds value by indicating the output includes a score, level, and multiple indicators, and that it influences suggestion adjustments. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the primary outputs (score and level) followed by secondary outputs and usage purpose. Every sentence earns its place with no redundancy or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description provides sufficient information about what it returns (score, level, indicators) and why it's useful (adjusting suggestions). It is complete for an agent to understand its purpose and inputs/outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline is 4. The description does not need to add parameter explanations as there are none. It effectively describes what the tool returns without needing to document inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a comprehensive portfolio score and investor level (novice/steady/advanced/professional) along with multi-dimensional quantitative indicators. It distinguishes itself from sibling tools like get_portfolio, get_portfolio_performance, etc., by focusing on a summary score and user categorization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the tool allows the LLM to understand the user's investment level and adjust suggestion depth and tone, providing clear context for when to use it. However, it does not explicitly mention when not to use it or compare it to alternatives, so a slight deduction applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolio_signalsA
Read-onlyIdempotent

取得持倉個股的量化信號警示:超買/超賣、突破、籌碼異動等。由後台分析引擎定期運算,可快速掌握需要關注的個股。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdNo指定股票代號(選填,不填則取全部持倉)
marketNo市場 TW 或 US,預設 TW

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description's disclosure of 'quantitative signal alerts from backend analysis engine' adds moderate context. However, it does not mention rate limits, authorization needs, or what happens if no holdings exist. The description adds value beyond annotations but is not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences with no waste. The first sentence states the purpose and signal types; the second adds context about the backend engine. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two optional parameters, good annotations, and no output schema, the description provides a clear purpose and general output overview. It could hint at the output structure (e.g., list of alerts, severity) but is fairly complete for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to add parameter details. It does not elaborate beyond what the schema already provides, maintaining baseline expectations. No additional semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves quantitative signal alerts for portfolio holdings, listing specific types (overbought/oversold, breakouts, chip changes). It distinguishes from siblings like get_stock_radar or get_technical_indicators by focusing on portfolio-level alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for quickly grasping stocks needing attention, but does not explicitly state when to use this tool versus alternatives (e.g., get_stock_radar). No when-not or alternative tool names are provided. The context is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyA
Read-onlyIdempotent

取得股票歷史價格資料(日K線),用於分析趨勢、計算漲跌幅

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
daysNo查詢天數,預設 30
marketNo市場,TW 或 US,預設 TW

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, non-destructive, and idempotent behavior. The description adds the specific behavioral trait that the tool returns daily K-line data, which implies candlestick OHLC data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is clear and front-loaded with the verb and resource. No extraneous information; every part contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain what the returned data contains (e.g., fields like open, high, low, close, volume). It only mentions 'daily K-line' but does not specify the output structure, leaving a significant gap for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter (stockId, days, market). The description does not add extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves historical daily price data (daily K-line) for trend analysis and calculation of gains/losses. It is specific about the resource (historical prices) and action (get), though it does not explicitly differentiate from siblings like get_stock_price or get_technical_indicators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the tool is for analyzing trends and calculating gains/losses, but it does not provide explicit guidance on when to use this tool vs. alternatives such as get_stock_price (likely for current prices) or get_technical_indicators. No 'when not to use' or comparative context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seasonalityA
Read-onlyIdempotent

取得單一股票的季節性報酬矩陣(近 N 年每月報酬、各月平均報酬),幫助判斷「哪幾月該進/該出」。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號
marketNo市場 TW 或 US,預設 TW
yearsNo回顧年數(3-20,預設 10)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds behavioral context: it returns a matrix of monthly returns and averages, and its purpose for decision-making. No contradictions or missing critical behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys purpose and output. It front-loads the key action and includes a practical benefit, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameters (code, market, years), clear annotations (read-only, idempotent), and absence of an output schema, the description fully covers what the tool does and what it returns. No additional context needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds value by explaining the output structure (monthly returns, averages) beyond the parameter definitions, enhancing agent understanding of the tool's data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a seasonal return matrix for a single stock, including monthly returns and averages, to help judge entry/exit months. This specific verb+resource combination distinguishes it from sibling tools like get_price_history or get_stock_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for seasonal analysis to identify buy/sell months, but does not explicitly state when not to use it or suggest alternatives. No exclusions or context for when other tools would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sector_rankingA
Read-onlyIdempotent

取得今日各產業漲跌幅排名,判斷資金正在輪動到哪些產業、哪些產業最弱

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場 tw 或 us,預設 tw
topNo顯示前 N 名,預設 10

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds that it gets 'today's' data, implying current-day ranking, but does not disclose any other behavioral traits such as data freshness, pagination, or limitations. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately states the main action and its purpose. Every clause adds value: getting the ranking and interpreting it for rotation. No redundant or unnecessary words, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low parameter count (2 optional), high schema coverage, and comprehensive annotations, the description is minimally adequate. However, it lacks details about the output format or expected results (e.g., list of sectors with change percentages). Since there is no output schema, the description could have provided more context to fill that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both 'market' and 'top', each with clear defaults. The description does not add any additional meaning beyond the schema. Since schema already explains parameters, the description's contribution is minimal, warranting a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: '取得今日各產業漲跌幅排名' (get today's industry price change ranking). It also adds context about judging money rotation and weak sectors, which distinguishes it from similar sibling tools like get_market_heatmap or get_market_overview by specifying the exact resource (sector ranking) and purpose (identifying rotation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for identifying sector rotation and weak sectors, but it does not explicitly state when to use this tool versus alternatives like get_market_heatmap or get_abnormal_blocks. There is no mention of exclusions or conditions, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sentiment_entry_strategiesA
Read-onlyIdempotent

進場時機建議 / entry timing / 何時買 — 從輿情服務取得情緒驅動的建議進場策略(含買點訊號 / 風險警示 / 建議持有時間)。當使用者問「現在該不該買」「進場時機」「什麼時候進場好」時用此工具。需後端 sentiment 服務啟用;未啟用時會回 enabled:false。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號
marketNo市場 TW 或 US,預設 TW

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as readOnly and idempotent. Description adds that it returns buy signals, risk warnings, and suggested holding periods, and discloses behavior when the backend service is disabled (returns enabled:false). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise and front-loaded with purpose in multiple languages, followed by usage guidance and dependency note. No filler, though multilingual repetition is slight overhead.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, and dependency. However, no output schema exists, and the description does not describe the return format or structure beyond mentioning components (buy signals, risk warnings, holding period). Lacks details about output for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (code, market). The description does not add additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: providing sentiment-driven entry timing strategies (buy signals, risk warnings, suggested holding period). It distinguishes from siblings by focusing on 'when to buy' based on sentiment, which is unique among the provided sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (用戶問「現在該不該買」「進場時機」「什麼時候進場好」) and a dependency (requires sentiment service enabled; returns enabled:false if not). Does not name specific alternative tools but provides clear context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sentiment_forecastsA
Read-onlyIdempotent

未來走勢預測 / forecast / 未來價格推估 — 從輿情服務取得多模型對未來 1d / 5d / 10d / 1m / 3m horizon 的預測共識(含情緒驅動的方向 / 機率 / 置信度)。當使用者問「下週走勢」「未來表現」「會漲還是會跌」「下個月怎麼看」這類預測問題時優先用此工具。需後端 sentiment 服務啟用;未啟用時會回 enabled:false。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號
marketNo市場 TW 或 US,預設 TW

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint. The description adds valuable behavioral context: it sources from a sentiment service, uses multiple models, and returns enabled:false if the service is disabled. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but includes all necessary information: purpose, usage guidance, prerequisites, and return description. It is front-loaded with the key purpose. Could be slightly restructured for clarity, but not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description adequately explains the return value: consensus forecasts including direction, probability, and confidence for multiple horizons. It also covers the service dependency and error condition (enabled:false), making it complete for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters (code and market). The description does not add any additional meaning or examples beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves multi-model consensus forecasts for specific horizons (1d/5d/10d/1m/3m) with sentiment-driven direction, probability, and confidence. It uniquely identifies the tool as a future prediction tool, distinguishing it from sibling tools like get_stock_sentiment_v2.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists example queries that should use this tool (e.g., 'next week's trend', 'future performance') and states priority over other tools. It also notes the prerequisite of backend sentiment service and the fallback response. However, it does not name alternatives or explicitly state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_betaA
Read-onlyIdempotent

計算個股的 Beta 係數(相對大盤的系統性風險)、與大盤的相關係數、年化波動度。用於風險調整評價與資產配置。Beta > 1 表示比大盤更敏感。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號,例如 2330、NVDA
marketNo市場 TW 或 US,預設 TW
windowDaysNo計算窗口天數,預設 252(1 年)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds no behavioral traits beyond what annotations provide, but it explains the calculation output, which is a minor addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences, each providing essential information: what is calculated, use case, and interpretation. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description effectively lists the outputs (Beta, correlation, volatility). It covers the key aspects but does not specify the return format or additional details like data source, which could be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add additional meaning to the parameters beyond what the schema already specifies. It mentions 'relative to market' and 'annualized volatility' but does not link them to the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool calculates Beta coefficient, correlation coefficient, and annualized volatility for a stock, and explains the interpretation of Beta. However, it does not explicitly distinguish from the sibling tool get_stock_correlation, which may cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is used for 'risk-adjusted valuation and asset allocation,' providing some context. But it does not specify when to avoid using this tool or mention alternative tools, leaving usage guidance implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_correlationA
Read-onlyIdempotent

計算多檔股票之間的相關性矩陣(Pearson 相關係數)

ParametersJSON Schema
NameRequiredDescriptionDefault
stocksYes股票代號(逗號分隔),例如 2330,2454,2317
daysNo計算天數,預設 60

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety. The description adds that it calculates Pearson correlation, but does not disclose other behavioral traits like data source, handling of missing data, or time frame specifics. The added value is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words. It is concise and front-loaded, effectively communicating the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should explain the return value (e.g., a matrix or list). It lacks this, making it incomplete for an agent to fully understand the tool's output. Given the tool's complexity, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; both parameters have descriptions: stocks (comma-separated stock codes) and days (default 60). The description adds no additional meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool calculates a correlation matrix using Pearson correlation for multiple stocks. The verb '計算' (calculate) and resource '相關性矩陣' (correlation matrix) clearly define the action and output, and it distinguishes from siblings like get_stock_beta (beta) or compare_stocks (comparison).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for computing correlation matrices but does not explicitly state when to use this tool versus alternatives such as get_stock_beta or compare_stocks. No context on exclusions or prerequisite conditions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_epsA
Read-onlyIdempotent

從本地資料庫取得個股近 N 季的 EPS(每股盈餘)與年增率(YoY)。適合分析獲利趨勢、判斷成長加速或衰退。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號,例如 2330、AAPL
marketNo市場 TW 或 US,預設 TW
limitNo筆數(1-20,預設 8 季)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, idempotent behavior. The description adds value by specifying data origin (local database) and returned metrics (EPS, YoY), but does not disclose edge cases like missing data or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise Chinese sentences, front-loading the action and purpose without extraneous words. Every sentence contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple data retrieval tool with complete annotations and schema, the description covers purpose and return values. However, it omits the structure of the returned data (e.g., list of quarters), which would be helpful given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the three parameters. The description does not add extra meaning beyond what the schema provides, maintaining the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves EPS and YoY growth from a local database for recent N quarters, with a specific verb and resource. It also adds use case context for profit trend analysis, differentiating from broader fundamental tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for EPS and growth analysis but does not explicitly state when not to use or list alternative tools among siblings (e.g., get_fundamentals_from_db). No exclusions or comparative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_priceA
Read-onlyIdempotent

取得台股即時報價,包含股價、漲跌、漲跌幅、成交量、開高低收

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330、2317、2454

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description does not need to restate safety. The description adds that it includes price, change, volume, etc., which is helpful but does not reveal additional behavioral traits beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and includes key return fields. Every word serves a purpose, with no unnecessary information. It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter and clear annotations, the description is complete enough. It specifies the output fields. Although there is no output schema, the description adequately conveys what the agent can expect. Minor improvement could be mentioning that it returns the latest data point.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting the 'code' parameter with examples of Taiwan stock codes. The description does not add further semantics beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves real-time stock quotes for Taiwan stocks, specifying included fields like price, change, volume, and OHLC. This distinguishes it from siblings such as 'get_price_history' (historical) and 'get_us_stock_quote' (US stocks), making the purpose precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives. However, the context of sibling tools (e.g., 'get_us_stock_quote', 'get_price_history') implies that for Taiwan real-time quotes, this is the appropriate choice. No direct when-to-use or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_radarA
Read-onlyIdempotent

取得個股多維度雷達圖評分(成長力、獲利品質、籌碼強度、技術動能、估值合理性等 6 軸)。快速判斷個股的綜合素質,適合「這檔股票各方面表現如何」的問題。目前僅支援台股(TW)。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes台股代號,例如 2330
marketNo市場,目前支援 TW,預設 TW

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds the important constraint that only TW stocks are supported, which is a behavioral trait. No additional side effects or permissions are disclosed, but the annotations cover the core safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core functionality, followed by a use case and limitation. Every sentence adds value, and there is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with two parameters and annotations, the description covers the purpose, axes, and limitations. It does not describe the output format, but since no output schema exists, this is a minor gap. Overall, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% description coverage for both parameters (code and market). The description adds no new parameter information beyond what the schema already contains, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves multi-dimensional radar scores (6 axes: growth, profit quality, etc.) and specifies the use case for assessing comprehensive stock quality. This distinguishes it from siblings like get_stock_price or get_technical_indicators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case (evaluating stock performance across aspects) and a limitation (TW only). However, it does not explicitly mention when to avoid this tool or compare to alternatives like get_full_stock_analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_sentiment_v2A
Read-onlyIdempotent

取得個股情緒分析(NER 比對新聞 + FinBERT 情緒評分),回傳情緒時序和相關新聞

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketNo市場 TW 或 US,預設 TW
daysNo查詢天數,預設 30

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent. Description adds method details (NER, FinBERT) and output description, providing useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence in Chinese that is compact, front-loaded with key information, and contains no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, description explains return value (sentiment time series and related news). Sufficient for a read-only tool with good annotations. Could mention data format but complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. Description does not add new information about parameters beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets individual stock sentiment analysis using NER and FinBERT, and returns time series and news. This differentiates it from market-level sentiment tools like get_market_sentiment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use. Implied usage for stock sentiment, but lacks comparison with sibling tools like analyze_sentiment or get_sentiment_forecasts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_systemic_riskA
Read-onlyIdempotent

取得當前市場的系統性風險評估:VIX 水準、信用利差、流動性指標等,綜合判定市場風險環境。適合回答「現在市場整體風險高嗎」「適合進場嗎」。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safe, non-destructive behavior. The description adds context about the components of the assessment (VIX, credit spreads, liquidity). It does not contradict annotations and provides sufficient behavioral insight for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence naming the tool's output and components, plus a brief usage hint. Every phrase is meaningful, and the structure is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description provides a reasonable overview of what the tool returns. However, it could be more explicit about the output format (e.g., a score, text summary, or numeric values) to ensure complete comprehension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema fully covers semantics. The description does not need to elaborate on parameters. The baseline score of 4 applies as there is no param information required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves current systemic risk assessment using VIX, credit spreads, and liquidity indicators, directly addressing questions like 'Is the overall market risk high now?' and 'Is it suitable to enter?'. It distinguishes itself from sibling tools that focus on specific metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it by providing example questions. However, it does not explicitly mention when not to use it or contrast with alternative tools like get_market_sentiment or get_macro_snapshot, which could serve similar purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_technical_indicatorsA
Read-onlyIdempotent

計算股票目前的技術指標:RSI(14)、MACD(12,26,9)、KD(9,3,3)、布林通道(20,2)、量比,判斷超買超賣狀態與趨勢方向

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330
marketNo市場 TW 或 US,預設 TW

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds value by specifying the exact indicators computed and the output purpose (judging status and trend), with no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that conveys all essential information: what indicators are computed and for what purpose. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description lists expected output indicators but does not detail the return format or data structure. This is a minor gap, but sufficient for most agents given the explicit list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add extra semantic information beyond the schema definitions for stockId and market.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool calculates technical indicators for stocks, listing specific indicators (RSI, MACD, KD, Bollinger Bands, Volume Ratio) with their parameters, clearly distinguishing it from sibling tools like get_stock_price or get_full_stock_analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for technical analysis by mentioning overbought/oversold and trend direction, but does not explicitly compare with alternatives or state when not to use it. The context from sibling tools provides differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_thesisA
Read-onlyIdempotent

查詢單檔股票的投資論點(hypothesis、key_levels、risk_conditions、watch_points、tags、next_review_date)。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330 或 AAPL
marketYesTW 或 US

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint: true, destructiveHint: false, idempotentHint: true, indicating a safe, read-only operation. The description adds value by listing the specific fields returned (hypothesis, key_levels, etc.), which is not present in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single Chinese sentence that front-loads the purpose and includes the relevant return fields. Every part is necessary, and there is no redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool is a simple retrieval with good annotations and schema, the description adequately covers what it does and what data it returns. However, it lacks explicit usage guidance and does not specify behavior when a thesis is not found, though these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters (stockId and market), so the schema already documents them. The description does not add any additional parameter semantics or usage examples beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states '查詢單檔股票的投資論點' (query investment thesis for a single stock), which is a specific verb+resource combination. It distinguishes from sibling tools like list_theses (multiple theses), delete_thesis, and upsert_thesis by targeting a single entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when to avoid it, nor does it reference sibling tools like list_theses for listing all theses or upsert_thesis for creating/updating. The agent must infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trade_journalA
Read-onlyIdempotent

查詢交易日誌 — 取得過去交易的決策快照與市場情境記錄

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdNo股票代號(可選,不填則回傳全部)
marketNo市場 TW 或 US
limitNo筆數上限,預設 10

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint, idempotentHint) already indicate a safe read operation. The description adds value by specifying that it returns 'decision snapshots and market context records,' which is behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise Chinese sentence that conveys the core purpose without extra words. It is front-loaded and efficient, though it could be slightly more structured for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool (3 optional params, read-only, no output schema), the description adequately conveys what the tool returns. It does not detail output fields, but the purpose is sufficiently complete for a query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description. The tool's description does not add further meaning to the parameters, so the score is at the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (query trade journal) and the resource (decision snapshots and market context records of past trades). It distinguishes this tool from sibling tools like get_portfolio or get_pnl_realized by specifying the unique content returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit when-to-use or when-not-to-use guidance. While the purpose is clear, there is no mention of alternatives or exclusions, leaving the agent to infer usage context from sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trading_day_statusA
Read-onlyIdempotent

查詢交易日狀態:當前是否開市、最近交易日、最近 5 個交易日清單、下個預期開市日。以本地 daily_prices 為實際成交日來源,國定假日推算為粗估。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場:TW(台股,預設)或 US(美股)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only and idempotent behavior. The description adds context about data sources (local daily_prices) and a caveat that holiday calculations are rough estimates, going beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences in Chinese efficiently convey purpose, outputs, and data source caveats. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists all return components (current open, last 5 days, etc.) but does not specify output structure or format. Given no output schema, it is mostly complete but could be more explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'market' already described. The description does not add additional parameter details, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries trading day status, listing specific outputs (current market open, recent trading day, last 5 trading days, next expected open). It distinguishes from siblings like get_market_overview by focusing on the trading calendar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking trading day status but does not explicitly state when to use it vs alternatives or provide exclusions. Siblings include many get_* tools, but no direct overlap is mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trading_levelsA
Read-onlyIdempotent

計算股票的左側與右側交易價位。左側(逆勢/抄底)包含均線支撐、Fibonacci回撤等;右側(順勢/追漲)包含突破壓力、均線站上確認等

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號,例如 2330
daysNo計算用的歷史天數,預設 60
marketNo市場 TW 或 US,預設 TW

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds minimal behavioral context beyond the calculation logic, providing no extra information on performance, limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the key purpose, and every sentence provides meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should ideally explain the return format. However, it explains the concepts of left and right levels, which partially compensates. It lacks detail on output structure, making it slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no additional semantic meaning to the parameters beyond what is already in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates left-side and right-side trading levels, explaining the concepts of contrarian and trend-following. It uses a specific verb-resource pair and distinguishes itself from siblings like get_technical_indicators by focusing on trading levels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks guidance on when to use this tool versus alternatives. It does not specify prerequisites, contexts, or scenarios where this tool is preferred over similar tools like get_full_stock_analysis or get_price_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_us_stock_quoteA
Read-onlyIdempotent

取得美股即時報價,可同時查詢多檔

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes美股代號(逗號分隔),例如 AAPL,NVDA,TSLA

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, idempotent. Description adds 'real-time' and 'multiple' context, which is helpful. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence that front-loads the main action (getting real-time quotes) and capability (batch query). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple one-parameter tool with no output schema, but could mention what the response contains (e.g., price, volume) to improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the only parameter. The tool description only implies batch usage, not adding much beyond the schema, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets US stock real-time quotes and can query multiple stocks at once. This distinguishes it from siblings like get_stock_price which may not be real-time or batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_stock_price or get_full_stock_analysis. It does not mention exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_yield_curveA
Read-onlyIdempotent

取得美國殖利率曲線狀態(DGS10、DGS2、T10Y2Y)並判讀是否倒掛。殖利率倒掛歷史上常為衰退前兆

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral traits such as rate limits or caching behavior. It aligns with annotations but does not provide extra context beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the key action and purpose. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no input parameters and no output schema, the description sufficiently explains the tool's purpose and output (status and inversion judgment). It adds historical context (precursor to recession) but could be more explicit about the output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100%. Per guidelines, baseline is 4. The description does not need to elaborate on parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the exact action (get US yield curve status and determine inversion) with specific indicators (DGS10, DGS2, T10Y2Y). It clearly distinguishes from sibling tools as no other tool focuses on yield curve inversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking yield curve inversion but does not explicitly state when to use it versus alternatives like get_macro_snapshot or get_macro_series. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invalidate_thesisA

把某檔股票的投資論點標記為失效(保留紀錄,可日後 reactivate)。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketYesTW 或 US
reasonNo失效理由(選填)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate it is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that the record is kept and can be reactivated later, providing behavioral context beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that front-loads the core action and includes key behavioral notes. Every word serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description adequately conveys purpose and key behaviors (retention and reactivability). The lack of output description is acceptable given the action-oriented nature; the agent can infer a success/error response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter already has a description. The tool description does not add additional meaning or usage details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description specifies the verb 'invalidate' (标记为失效) and the resource 'thesis' (投資論點), with the additional context that records are retained and can be reactivated. This clearly distinguishes it from siblings like delete_thesis (permanent removal) or reactivate_thesis (undo).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use for marking a thesis invalid while retaining it, but does not explicitly state when to use it versus alternatives like delete_thesis. The existence of sibling tools provides context, but the description itself lacks explicit guidance on selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_alertsA
Read-onlyIdempotent

列出所有股價/條件提醒(包含已觸發、未觸發)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent behavior. The description adds that it includes both triggered and untriggered alerts, providing extra context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the key action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool with good annotations, the description is complete enough. It specifies the scope but could optionally mention sorting or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 applies. The description need not add parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all stock price/condition alerts, including triggered and untriggered. This distinguishes it from sibling tools like cancel_alert or set_price_alert.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving the full list of alerts. No explicit exclusions or alternatives are provided, but the context is clear for a simple list-all tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_thesesA
Read-onlyIdempotent

列出所有股票投資論點(thesis)。可選擇只看仍有效的、或只看快到 next_review_date 的。

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNo只回未失效的論點,預設 false
dueForReviewNo只回已到下次檢查日期的論點,預設 false

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly and idempotent behavior. The description adds filter context but does not disclose any further behavioral traits (e.g., pagination, ordering). Consistent with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with front-loaded purpose and filter options. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple list tool with two booleans, but lacks details about output structure or pagination, which could be helpful for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description's mention of filters adds minimal extra meaning beyond schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists investment theses, with optional filters. The verb 'list' and resource 'theses' are specific. Distinguishes from sibling `get_thesis` which is for a single thesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through filter options but does not explicitly state when to use this tool versus alternatives like `get_thesis` or when not to use it. No exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_watchlistA
Read-onlyIdempotent

列出關注清單(與實際持倉 portfolio 分開,只是觀察追蹤)。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTW 或 US,留空回所有市場

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already confirm read-only and idempotent behavior; description adds context about separate portfolio distinction but no additional behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple list tool with one optional parameter; lacks description of return format or content, but acceptable given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only parameter 'market' is fully described in schema; description adds no extra meaning beyond schema, schema coverage is 100%, baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists a watchlist distinct from actual portfolio holdings, using specific verb-resource combination and differentiating from sibling get_portfolio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indicates watchlist is for observation only, separating it from portfolio tools; however, no explicit when-not or alternative tools mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monte_carlo_factor_miningA
Read-onlyIdempotent

蒙地卡羅隨機選股因子挖掘(B2 Factor Mining)— 翻轉「哪個組合最好」(brute force selection bias 必死)為「好組合的共同特徵是什麼」。跑 N 個隨機組合 → 對每個組合算因子暴露(動能 / 波動度 / 規模 / 產業集中度...)→ 對 (factor, sharpe) 做迴歸找出顯著因子。輸出:因子排序 + Pearson r + R² + scatter raw data。屬研究工具,輸出應做新策略假設源、不該直接交易。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場 TW 或 US,預設 TW
startDateYes回測起日 YYYY-MM-DD
endDateYes回測迄日 YYYY-MM-DD
nPicksNo隨機抽幾檔(2-50,預設 10)
nSimulationsNo次數(100-5000,預設 1000)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the tool is safe. The description adds behavioral context: it runs simulations, performs regression, and outputs scatter data. It describes the tool as a research tool, which implies no side effects. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but every sentence adds value: it explains the core concept, methodology, output, and usage guidance. It is well-structured and front-loaded with the purpose. Slightly verbose but efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity and no output schema, the description covers the key aspects: what it does, how it works (regression), what it outputs (factor ranking, Pearson r, R², scatter raw data), and how to use it (research only, not for trading). It is complete enough for an agent to understand when to invoke and what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 5 parameters have descriptions). The tool's description adds context about the purpose (e.g., '跑 N 個隨機組合' refers to nSimulations) but does not significantly elaborate beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: Monte Carlo random stock selection factor mining. It explains the methodology (run N random portfolios, calculate factor exposures, regress factor vs Sharpe, output factor ranking with Pearson r, R², scatter raw data). It is distinct from the sibling tool 'monte_carlo_random_portfolio' which likely does only random portfolio generation, not factor mining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it is a research tool and that output should be used as source for new strategy hypotheses, not for direct trading. This provides clear when-to-use and when-not-to-use guidance, though it does not name alternative tools explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monte_carlo_random_portfolioA
Read-onlyIdempotent

蒙地卡羅隨機選股 benchmark — 從指定 universe 隨機抽 N 檔等權重持有 K 次,得到 random benchmark 分布;如帶入用戶策略指標,回傳該策略落點百分位 + p-value。回答「我的策略真有 alpha 還是運氣好」。低頻交易者特別有效(單條 path 不穩 → MC 把 single-path 變 distribution)。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo市場 TW 或 US,預設 TW
startDateYes回測起日 YYYY-MM-DD
endDateYes回測迄日 YYYY-MM-DD
nPicksNo隨機抽幾檔(2-50,預設 10)
nSimulationsNo次數(100-10000,預設 1000;建議 ≥ 1000)
poolNouniverse pool:all(預設)/ top50_100(v2)
strategyTotalReturnNo用戶策略總報酬率 %(用來算百分位;可選)
strategySharpeNo用戶策略 Sharpe(可選)
strategyMaxDDNo用戶策略最大回撤 %(正值;可選)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnly, non-destructive, idempotent. Description adds that the tool generates a distribution and returns percentile/p-value if strategy metrics are provided, and explains why it's useful for low-frequency traders. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that conveys core purpose, method, and use case. However, it is somewhat dense and could be more concise. Not as front-loaded as ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool does, how it works, and provides a practical use case. Although there is no output schema, the description implies the return includes distribution and optionally percentile/p-value, which is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds context for optional strategy parameters (used to compute percentile), but does not significantly enhance meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs Monte Carlo random stock picking from a universe to generate a random benchmark distribution, and can return a strategy's percentile and p-value. It differentiates from siblings like monte_carlo_factor_mining by focusing on benchmarking random portfolios.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the tool is used to answer whether a strategy has alpha or is lucky, and notes it is particularly effective for low-frequency traders. It provides context but does not explicitly list when not to use it or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_portfolioA
Read-onlyIdempotent

投資組合最佳化 — Markowitz 最大夏普比率法。輸入多檔股票,根據歷史日報酬率計算最優權重配置,輸出各股建議比例、預期年報酬、年化波動度、夏普比率。

ParametersJSON Schema
NameRequiredDescriptionDefault
codesYes股票代號(逗號分隔,2-10 檔),例如 2330,2454,2303,2382
marketNo市場 TW 或 US,預設 TW
riskFreeRateNo無風險利率(年化小數),預設 0.02(2%)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is clear. The description adds behavioral context: it uses historical daily returns, calculates optimal weights, and outputs specific metrics. This goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence covering method, input, and output. It is efficient and front-loaded, though slightly more structure (separating input/output) could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema and annotations, the description adds necessary method and output details. It lists the four key output fields, compensating for the lack of output schema. Complete for a calculation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all parameters described (codes, market, riskFreeRate). The description does not add significant meaning beyond the schema but does not need to due to high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs portfolio optimization using the Markowitz maximum Sharpe ratio method. It specifies the input (multiple stocks) and output (recommended weights, expected return, volatility, Sharpe ratio), distinguishing it from sibling tools like get_portfolio or calculate_portfolio_var.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for optimization but does not explicitly state when to use this tool versus alternatives. With many portfolio-related siblings, explicit guidance on when to choose optimization would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

portfolio_daily_briefingA
Read-onlyIdempotent

每日 portfolio 簡報(盤前 morning / 盤後 evening)— 整合當前持股表現、未實現損益、產業曝險、relevant macro / institutional flow,產出一段 LLM 摘要 + actionable next steps。盤前看「今天該注意什麼」,盤後看「今天發生什麼 + 明天 setup」。預設 mode='get'(讀最新一份);若指定 mode='generate' 會跑新的一份(~10-20s)。LLM 成本約 $0.04/generate call,get 是 free。

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo簡報類型 morning(盤前)或 evening(盤後),預設 morning
modeNoget = 讀最新已生成的(free, 即時); generate = 重新生成一份(會打 LLM, ~10-20s)。預設 get。

TDQS

A3.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, but the description states mode='generate' creates a new briefing via LLM, which is a write operation. This is a direct contradiction. The description does add useful context about cost and latency, but the contradiction severely undermines transparency. Annotation Contradiction flagged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that efficiently conveys purpose, timing, integration details, and operational notes (cost, speed). It contains no filler, though a structured format (e.g., bullet points or separate sections) could improve readability for complex information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately describes the output (LLM summary + actionable steps) and inputs (type, mode with behavioral nuances). It covers content elements (holdings, P&L, exposures, macro) but could specify output format or additional fields (e.g., specific metrics included).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with enums and brief descriptions (100% coverage). The description adds significant meaning: it explains the real-world implications of type (morning watchlist vs. evening recap) and mode (cost/time trade-offs), going beyond the schema's basic enum labels.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a daily portfolio briefing with two variants (morning/evening), integrating holdings, P&L, exposures, and macro/institutional flow, producing an LLM summary with actionable steps. It distinguishes itself from sibling tools like get_portfolio or get_portfolio_performance by offering a synthesized, contextual summary rather than raw data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use each briefing type (pre-market vs. post-market) and details the mode parameter: get for free immediate retrieval, generate for costly on-demand generation. It implies judicious use of generate due to cost and time, but does not explicitly contrast with alternative portfolio tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_trade_reviewA
Read-onlyIdempotent

過去 N 天交易反思 — 把 analyze_trade_performance(FIFO PnL / 勝率 / 平均持有天數)+ get_trade_journal(最近交易紀錄)+ get_portfolio_signals(當前訊號)三份資料結構化成 'lessons learned' 草稿。輸出包含:wins / losses / patterns(盤整時亂操作 / 抱不住贏家 / 凹單等可偵測的習慣)/ recommendations / open_positions_to_review。不打 LLM(cost=$0),agent LLM 看結構化 evidence 自己寫 review。

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo回顧區間天數,預設 30,最大 365
marketNo市場 TW / US / all,預設 all(雙市場)
max_tradesNo回傳的最近交易紀錄筆數上限,預設 20(避免 token 爆)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds value by noting it does not call an LLM (cost=$0) and that the agent writes the review based on structured evidence, providing transparency about cost and workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, structured as a list of outputs, and ends with an important cost note. Every sentence is relevant and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, but the description thoroughly lists all output components (wins, losses, patterns, recommendations, open_positions_to_review). It is complete for its purpose, though more detail on the structure of each component could be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds that max_trades defaults to 20 to avoid token explosion, which provides additional rationale beyond the schema. This improves parameter understanding slightly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function as a past N days trade review that structures data from three other tools into a 'lessons learned' draft, with explicit output components (wins, losses, patterns, recommendations, open_positions_to_review). This distinguishes it from siblings like analyze_trade_performance or get_trade_journal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it's for reviewing trades over a period, combining multiple data sources. It implicitly distinguishes from siblings by naming them. However, it does not explicitly state when to avoid this tool or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reactivate_thesisB

重啟之前標記為失效的投資論點。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketYesTW 或 US

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this tool modifies data (readOnlyHint=false) and is not destructive. The description adds no extra behavioral context beyond the verb 'reactivate', so it meets the minimum but lacks details like side effects or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently conveys the tool's purpose. While it lacks structured elements like examples or notes, it is appropriately sized for a simple action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameters and no output schema, the description is adequate for a basic reactivation tool. However, it could mention prerequisites (e.g., thesis must be invalidated) or confirm the result, making it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('reactivate') and the resource ('thesis'), specifying it applies to previously invalidated theses. This distinguishes it from siblings like 'invalidate_thesis' and 'delete_thesis'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., the thesis must be invalidated) or situations where reactivation is inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_watchlistA
Destructive

從關注清單移除一筆股票(提供 id 或 stockId+market 組合)。

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo項目 id(與 stockId+market 二選一)
stockIdNo
marketNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states 'remove', which is consistent with the annotations (destructiveHint: true, readOnlyHint: false). It does not add extra behavioral details beyond the annotations, such as side effects or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is highly concise and front-loaded with the core action. Every word is necessary and no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (removal, no output schema), the description is reasonably complete. It covers the main function and parameter usage, though it omits post-removal behavior or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds value beyond the schema by clarifying the mutual exclusivity of the id and stockId+market parameters. The schema has 33% coverage (only id described), and the description compensates by explaining the two modes of identification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'remove', the resource 'a stock from the watchlist', and how to identify the stock (by id or stockId+market combination). It effectively distinguishes from sibling tools like add_watchlist or update_watchlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use: to remove a stock from the watchlist. However, it does not provide any guidance on prerequisites, what happens if the stock is not found, or when not to use it. It is adequate but minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_stock_deep_diveA
Read-onlyIdempotent

深度個股研究 — 5 個專業 AI agent 並行辯論:🐂 多頭 vs 🐻 空頭 vs 📰 情緒 vs 🛡️ 風險 → 🎯 Synthesizer 整合給 6-level 最終建議(strong_buy / buy / hold / sell / strong_sell / avoid)。比單一 LLM 分析更穩,因為 Bull/Bear 各自只看支持自己論點的證據,Synthesizer 看到兩邊全貌再下結論。回傳每個 agent 的 reasoning + final action + 信心分數。需要 Premium tier — Free / Standard 收到 403。LLM 成本約 $0.16/call。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號,例如 2330 / AAPL
marketNo市場 TW 或 US,預設 TW
langNo輸出語言 zh 或 en,預設 zh

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, etc.), the description reveals the internal debate mechanism, the fact that Bull/Bear agents focus on supportive evidence only, the Synthesizer's broader view, and the cost per call. It also flags the Premium tier restriction, adding significant behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the main purpose, but it includes somewhat verbose details (emojis, internal process explanation) that could be tightened without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description compensates by explaining the return structure (each agent's reasoning, action, confidence score). It also covers cost, tier restriction, and the internal architecture, providing a comprehensive understanding of the tool's behavior and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have descriptions in the schema, so the description adds no extra parameter semantics beyond what the schema already provides. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an in-depth stock research tool using 5 AI agents in a parallel debate, culminating in a 6-level final recommendation. It distinguishes itself from sibling tools by specifying the multi-agent, debate-style analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the tool is more robust than single LLM analysis and mentions the Premium tier requirement, but does not explicitly mention when not to use it or suggest alternative tools for specific scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_analysis_noteB

儲存一筆分析備忘(文字筆記),之後可以透過查詢讀取。

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes標題
contentYes備忘內容
stockIdNo相關股票代號(選填)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds minimal context: the note is textual and can be read later. It does not discuss overwrite behavior, creation vs. update, or any side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy. It efficiently conveys the core purpose. Every word is necessary, and the structure is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool with flat parameters and no output schema, the description is minimally sufficient. However, it omits details like how to retrieve the note (which tool), or any constraints (e.g., duplicability). Given the siblings include several analysis tools, more context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema offers 100% coverage with clear descriptions for all three parameters (title, content, stockId). The description does not add further meaning beyond the schema. Baseline 3 is appropriate as the schema already documents the parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool saves an analysis note (text memo) that can be later read via query. It uses specific verb 'save' and resource 'analysis note', distinguishing it from siblings like 'upsert_thesis' or 'add_trade'. However, it lacks detail about the exact purpose or scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention scenarios, exclusions, or relations to other note-related tools such as 'upsert_thesis' or 'get_thesis'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_stocksA
Read-onlyIdempotent

自然語言選股 — 根據條件篩選符合條件的台股或美股。可篩選:外資買超、股價站上均線、漲跌幅、成交量、市值、本益比等

ParametersJSON Schema
NameRequiredDescriptionDefault
conditionsYes自然語言篩選條件,例如「外資連續買超3日且股價站上月線」或具體條件如 JSON
marketNo市場: tw 或 us,預設 tw
topNNo回傳前 N 檔,預設 10

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description adds no extra behavioral context. It does not mention any limitations, rate limits, or side effects beyond the examples.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence in Chinese that quickly conveys the tool's purpose and examples. It is front-loaded and free of redundancy, though minor restructuring could improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool involves natural language filtering and returns a list of stocks, but the description does not specify the output format or behavior (e.g., whether it returns full stock details or just symbols). The topN parameter is mentioned in the schema but not explained in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the three parameters. The description adds value by providing example natural language conditions (e.g., 'foreign buying for 3 consecutive days'), which clarifies the expected format beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool screens stocks in Taiwan or US markets based on natural language conditions, listing example criteria like foreign buying and moving averages. This distinguishes it from sibling tools that focus on single stock data or specific analyses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for filtering stocks by broad criteria but does not explicitly state when to use it versus alternatives like get_stock_price or get_technical_indicators. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_price_alertA
Idempotent

設定股價提醒,執行前會請使用者確認。條件:above(突破)或 below(跌破)。

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes股票代號,例如 2330
marketNoTW 或 US,預設 TW
nameNo股票名稱(選填)
conditionYesabove 或 below
priceYes觸發價格

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: it explicitly states that the tool will ask for user confirmation before execution. Annotations include idempotentHint=true, which is not contradicted. The description enhances transparency about the interaction flow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences. It front-loads the primary action and includes crucial details (user confirmation, conditions). Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (5 params, 3 required) and lack of output schema, the description covers the essential aspects: purpose, conditions, and user confirmation. It could mention the outcome after confirmation, but it's implied. Adequate for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the condition parameter (above/below) but does not elaborate on other parameters. It adds value without being redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: setting a stock price alert (設定股價提醒). It specifies the verb (set) and resource (price alert), and distinguishes from siblings like cancel_alert or list_alerts. The inclusion of conditions (above/below) adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (to set a price alert with conditions). It does not explicitly exclude alternatives, but the purpose is straightforward given the tool name and sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_backfillA

對指定股票立即啟動歷史日線補齊(不等排程,直接執行)。適合當圖表顯示歷史資料不足時主動幫用戶補料。補齊作業透過 SSE 回報進度,通常數秒至數十秒完成。

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes股票代號,例如 AAPL、2330、ASML
marketYes市場:TW 或 US
yearsNo補齊年份,預設 5

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so description carries the burden. It discloses that the tool initiates an immediate write operation, progress is reported via SSE, and completion time (seconds to tens of seconds). It does not contradict annotations. The behavior is well-described except for idempotency or effect of repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, no redundant information. Every sentence adds value (action, use case, progress reporting, time estimate). It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the core capability, use case, and progress mechanism. However, it does not mention the return value or output format (e.g., job ID, success status), which would be helpful given no output schema. For a simple trigger tool, this is a moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all three parameters (symbol, market, years). The tool description does not add new parameter-specific meaning beyond the schema. It provides context (e.g., '歷史日線') but no syntax or format details, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool triggers an immediate historical daily backfill for a specified stock, distinguishing it from scheduled backfill ('不等排程'). It also specifies the use case: when chart history is insufficient. This differentiates it from the sibling tool trigger_batch_backfill, which likely handles batch operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use ('適合當圖表顯示歷史資料不足時'), implying it is for on-demand backfill. However, it does not explicitly state when not to use or mention alternatives like the sibling tool trigger_batch_backfill. The guidance is implicit but lacks direct exclusion or comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_batch_backfillA

對指定的一批股票(symbols 陣列)立即啟動歷史日線批次補齊。適合當用戶的投資組合或多檔股票都缺少足夠歷史資料時一次性補全。每個市場同時只能有一個補齊作業。

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYes市場:TW 或 US
symbolsYes股票代號陣列,例如 ["2330","0050","00646"]
yearsNo補齊年份,預設 5
skipExistingNo跳過已有足夠資料的股票,預設 false(全部重新補)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: it is a mutation (starting a job) and enforces a one-job-per-market constraint. Annotations indicate non-readonly, non-destructive, non-idempotent, which aligns with the description. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences (three clauses in Chinese) with no wasted words. It front-loads the action and constraint. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not explain return value (e.g., job ID or status) or how to monitor progress. For a tool that triggers an asynchronous operation, this is a significant gap. Missing details on job lifecycle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so baseline is 3. The description provides context that the symbols array is for a batch of stocks, but does not add meaning beyond what the schema already describes. Years default is mentioned in schema, not in description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (trigger) and resource (batch backfill of historical daily data for stocks). It distinguishes from siblings like 'trigger_backfill' by emphasizing 'batch' and multiple symbols. However, it does not explicitly contrast with the singular backfill tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: 'Suitable when a user's portfolio or multiple stocks lack sufficient data and need one-time completion.' It also notes the constraint 'Only one backfill job per market at a time.' However, no mention of alternatives or when not to use is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_tradeA
Idempotent

修改一筆已存在的交易紀錄(依 transaction id)。執行前會請使用者確認。可修改 shares / price / tradeDate / note。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes交易 id(必填);可從 get_trade_journal 取得
sharesNo新股數(選填)
priceNo新成交價(選填)
tradeDateNo新交易日期 YYYY-MM-DD(選填)
noteNo新備註(選填)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description adds that user confirmation is requested before execution, a behavioral trait not captured by annotations. This enhances transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose, usage guideline, and key details. No filler; front-loaded with the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with five parameters and no output schema, the description covers core aspects. Minor gaps: does not explain return values or error conditions, but these are typical for such tools. The requirement for user confirmation is a useful addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description lists the modifiable fields but adds no additional semantic meaning beyond what the schema already provides, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing trade record by transaction ID and lists the modifiable fields (shares, price, tradeDate, note), providing a specific verb and resource that distinguishes it from siblings like add_trade and delete_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that user confirmation is required before execution, which provides some usage context. However, it does not explicitly specify when to use this tool versus alternatives or state prerequisites like the need for an existing record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_watchlistA
Idempotent

修改關注清單某筆項目的 note / tags / display_name(要 id)。

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes關注清單項目 id
display_nameNo
noteNo
tagsNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and non-destructive/non-read-only nature. The description adds minimal context beyond 'modify'; it does not detail merge behavior or failure handling, but with annotations, the bar is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, including a helpful reminder that id is required. Ideal length for a simple update tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimally complete for a mutation tool with annotations. It fails to specify whether partial updates merge or overwrite fields, the return format, or error handling. However, given the tool's simplicity and annotation coverage, it just meets adequacy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (id has description). The description lists the modifiable fields (note, tags, display_name) but does not explain their semantics beyond that. Partially compensates for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it modifies note, tags, or display_name of a watchlist item, with a specific verb and resource. It distinguishes from sibling tools like add_watchlist, list_watchlist, and remove_watchlist by specifying the update nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites or exclusions, and does not mention that it requires an existing watchlist item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upsert_thesisA
Idempotent

新增或更新單檔股票的投資論點。同一 (stockId, market) 只能有一筆,重覆呼叫會覆寫。

ParametersJSON Schema
NameRequiredDescriptionDefault
stockIdYes股票代號
marketYesTW 或 US
hypothesisNo主要投資假設文字
key_levelsNo關鍵價位 {entry, target, stopLoss}
risk_conditionsNo失效條件文字
watch_pointsNo需要追蹤的觀察點
next_review_dateNo下次檢查日期 YYYY-MM-DD
tagsNo分類標籤陣列

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint: true and destructiveHint: false. The description adds that repeated calls overwrite, confirming idempotency. No additional behavioral details (e.g., partial update behavior) are given, so the description adds modest value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that gets straight to the point. No unnecessary information, and it is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 parameters and nested objects, but no output schema. The description covers the upsert behavior and uniqueness, but lacks details on partial updates and validation constraints, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add parameter-level details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds or updates an investment thesis for a single stock, and specifies the uniqueness constraint on (stockId, market). This distinguishes it from siblings like delete_thesis or get_thesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool (to add/update a thesis) and implies when not to use (e.g., deleting or viewing). However, it does not explicitly list alternatives or exclusion criteria, making it slightly less than perfect.

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. 85 tool updatesv1.2.1
    • First observedadd_trade
    • First observedadd_watchlist
    • First observedanalyze_sentiment
    • First observedanalyze_trade_performance
    • First observedbacktest_grid_search
    • First observedbacktest_multi_strategy
    • First observedbacktest_strategy
    • First observedcalculate_dcf
    • First observedcalculate_portfolio_var
    • First observedcancel_alert
    • First observedcompare_investment_candidates
    • First observedcompare_stocks
    • First observedcreate_analysis_workflow
    • First observeddelete_thesis
    • First observeddelete_trade
    • First observeddetect_kline_patterns
    • First observedget_abnormal_blocks
    • First observedget_chip_flow_overview
    • First observedget_dividend_info
    • First observedget_earnings_calendar
    • First observedget_etf_holdings
    • First observedget_exchange_rate
    • First observedget_fed_policy_stance
    • First observedget_financial_events
    • First observedget_financial_statements
    • First observedget_full_stock_analysis
    • First observedget_fund_flow_sankey
    • First observedget_fundamentals_from_db
    • First observedget_insider_alerts
    • First observedget_institutional_flow
    • First observedget_macro_employment
    • First observedget_macro_inflation
    • First observedget_macro_series
    • First observedget_macro_snapshot
    • First observedget_margin_ranking
    • First observedget_market_heatmap
    • First observedget_market_overview
    • First observedget_market_sentiment
    • First observedget_monthly_revenue
    • First observedget_news
    • First observedget_pnl_realized
    • First observedget_portfolio
    • First observedget_portfolio_concentration
    • First observedget_portfolio_performance
    • First observedget_portfolio_score
    • First observedget_portfolio_signals
    • First observedget_price_history
    • First observedget_seasonality
    • First observedget_sector_ranking
    • First observedget_sentiment_entry_strategies
    • First observedget_sentiment_forecasts
    • First observedget_stock_beta
    • First observedget_stock_correlation
    • First observedget_stock_eps
    • First observedget_stock_price
    • First observedget_stock_radar
    • First observedget_stock_sentiment_v2
    • First observedget_systemic_risk
    • First observedget_technical_indicators
    • First observedget_thesis
    • First observedget_trade_journal
    • First observedget_trading_day_status
    • First observedget_trading_levels
    • First observedget_us_stock_quote
    • First observedget_yield_curve
    • First observedinvalidate_thesis
    • First observedlist_alerts
    • First observedlist_theses
    • First observedlist_watchlist
    • First observedmonte_carlo_factor_mining
    • First observedmonte_carlo_random_portfolio
    • First observedoptimize_portfolio
    • First observedportfolio_daily_briefing
    • First observedpost_trade_review
    • First observedreactivate_thesis
    • First observedremove_watchlist
    • First observedresearch_stock_deep_dive
    • First observedsave_analysis_note
    • First observedscreen_stocks
    • First observedset_price_alert
    • First observedtrigger_backfill
    • First observedtrigger_batch_backfill
    • First observedupdate_trade
    • First observedupdate_watchlist
    • First observedupsert_thesis

TDQS

B3.4/5.0

Scored across 85 tools

Disambiguation2/5

Many tools have overlapping purposes, such as multiple sentiment analysis tools (analyze_sentiment, get_stock_sentiment_v2, get_market_sentiment) and comprehensive analysis tools (get_full_stock_analysis, create_analysis_workflow, research_stock_deep_dive). This makes it difficult for an agent to choose the correct tool.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern in snake_case (e.g., add_trade, get_stock_price). However, some tools like monte_carlo_factor_mining and research_stock_deep_dive deviate from this pattern, causing minor inconsistency.

Tool Count2/5

With 85 tools, the server is over-scoped. While it covers a broad domain, many tools could be merged or streamlined. The high count adds unnecessary complexity and makes the server feel like a kitchen sink rather than a focused toolset.

Completeness5/5

The tool set is remarkably comprehensive, covering stock data, technical analysis, fundamentals, sentiment, backtesting, portfolio management, macros, and more. There are no obvious gaps for stock analysis and portfolio management tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Provides comprehensive Taiwan stock market data and analysis through MCP tools. Enables querying real-time stock prices, historical data, company information, technical analysis, and market overviews for TWSE and TPEx listed companies.
    8
    16
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides real-time stock quotes, technical analysis, and intelligent trading recommendations specifically for the Taiwan stock market. Supports single and multiple stock queries, comparative analysis, and investment decision support through natural language interactions.
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    22
    10 npm
    7
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    US/HK markets — 110 tools: real-time quotes, options, orders, fundamentals, alerts, DCA & portfolio
    164
    14
    Apache 2.0