longbridge
OfficialLongbridge MCP server provides 145 tools for brokerage operations across US and HK markets:
Quotes & Market Data: Real-time and historical quotes, candlesticks, order book depth, broker queues, capital flow, market sentiment/temperature, A/H premium, options chain, short positions, market anomalies, and index constituents.
Trading: Submit, cancel, and replace orders; view positions, account balance, executions, cash flow, and margin ratios.
Fundamentals: Financial statements, business segments, dividends, EPS forecasts, analyst consensus, institutional ratings, company profiles, corporate actions, regulatory filings, and industry valuations.
Market & Industry Data: Industry rankings, broker holdings (HKEX CCASS), trade statistics, popularity leaderboards, stock screener, and calculated financial indexes.
Macroeconomic Data: Access macro indicators (CPI, GDP, NFP, etc.) and their historical values.
IPO: Subscriptions, calendar, recently listed stocks, order details, and profit/loss analysis.
Portfolio: Profit/loss analysis (overall and per-symbol), exchange rates.
DCA (Dollar-Cost Averaging): Create, update, pause, resume, and stop plans; view execution history and statistics.
Alerts: Add, delete, enable, disable, and list price alerts.
Watchlists & Community: Watchlist group management, community sharelist CRUD, member management, and popular lists.
Content & Search: Symbol news, news search, discussion topics, community topic search, and financial calendar (earnings, dividends, IPOs, macro events, market holidays).
Banking & Statements: Bank cards, deposit/withdrawal records, and account statement listing/export.
Quant: Run custom indicator scripts against historical K-line data.
Utility: Retrieve current UTC time.
Official MCP server for the Longbridge brokerage. 163 tools across real-time quotes, options, order routing, fundamentals, analyst ratings, calendars, IPO, price alerts, DCA plans, grid trading, portfolio analytics and community sharelists — covering US and HK markets. Built with Rust using rmcp and axum.
Add it in one place | Then just ask | |
ChatGPT | Settings → Apps & Connectors → add Longbridge | "How's NVDA trading today?" · "Show my HK positions" |
Claude | Settings → Connectors → add Longbridge (web · desktop · mobile) | "Compare AAPL and MSFT valuations" · "Any IPOs this week?" |
Sign in once with your Longbridge account. Every request runs over the same hosted, OAuth 2.1–secured endpoint documented below — read-only market data plus full account, portfolio, and trading tools, all gated by your own credentials.
Highlights
163 tools, one endpoint — quotes, options, order routing, fundamentals, analyst research, screeners, IPO, alerts, DCA, grid trading and portfolio analytics across US and HK markets.
Stateless by design — every request forwards its Bearer token straight to the Longbridge SDK. No sessions, no database, nothing stored server-side.
OAuth 2.1, auto-discovered — RFC 9728 protected-resource and RFC 8414 authorization-server metadata; clients complete the flow with no token to paste.
Clean, typed responses — snake_case fields, RFC 3339 timestamps, human-readable symbols, and typed
outputSchemadescriptors for compatible clients.
Built in Rust with rmcp and axum.
Related MCP server: Stock MCP Server
Connect your own client
Longbridge runs a hosted endpoint at https://mcp.longbridge.com — point any MCP client at it and complete OAuth when prompted. Authorization is auto-discovered via RFC 9728; there is no token to paste.
Claude Code
claude mcp add --transport http longbridge https://mcp.longbridge.comClaude Desktop — add to claude_desktop_config.json, then restart:
{ "mcpServers": { "longbridge": { "url": "https://mcp.longbridge.com" } } }Cursor · Cline · Windsurf · Zed · other clients — point them at https://mcp.longbridge.com with transport streamable-http.
# Local self-hosted instance (see Self-hosting below)
claude mcp add --transport http longbridge-local http://localhost:8000/mcp
claude mcp list # registered servers
claude mcp get longbridge # config + auth status
claude mcp remove longbridge # unregister
claude mcp logout longbridge # re-trigger OAuth after revocationOn first use, the client reads the WWW-Authenticate challenge, fetches /.well-known/oauth-protected-resource (RFC 9728), and opens your browser for the Longbridge OAuth flow. Tokens are cached per session and refreshed automatically.
The 163 tools
Twenty categories spanning market data, trading, research and account management.
Category | Count | Coverage |
Quote | 32 | Real-time and historical quotes, candlesticks, depth, brokers, options, warrants, watchlists, capital flow, market temperature, short positions, option volume |
Fundamental | 33 | Financial statements/reports, business segments, institutional views, industry peers/valuation, dividends, EPS forecasts, valuations & valuation comparison, company info/executives, shareholders, corporate actions, operating metrics |
Trade | 14 | Order submission/cancellation/replacement, positions, balance, executions, cash flow, margin |
Market | 15 | Market status, industry/top-mover rank, broker holdings, A/H premium, trade statistics, anomalies, short trades/margin, index constituents |
DCA | 9 | Dollar-cost averaging plan create/update/pause/resume/stop, execution history, statistics, support check |
Grid | 11 | Grid trading order submit/replace/cancel/suspend/restart, list/detail/trigger-history reads, per-symbol setup info, one-time strategy consent |
Sharelist | 8 | Community sharelist CRUD, member add/remove/sort, popular lists |
IPO | 7 | IPO subscriptions, calendar, listed stocks, order detail, profit/loss analysis |
Content | 7 | News list/detail, discussion topic CRUD and replies |
Alert | 5 | Price alert CRUD (add, delete, enable, disable, list) |
Screener | 5 | Stock screener search, indicators, strategy recommendation/management |
Portfolio | 4 | Exchange rates, profit/loss analysis (summary, detail, realized) |
ATM | 3 | Bank cards, withdrawal records, deposit records |
Macrodata | 2 | Macroeconomic indicator list and detail |
Search | 2 | News search, community topic search |
Statement | 2 | Account statement listing and export |
Calendar | 1 | Finance calendar (earnings, dividends, IPOs, macro data, closures) |
Quant | 1 | Run a quant indicator script against historical K-line data |
Authenticate | 1 | OAuth code exchange for clients that can't complete a browser redirect |
Utility | 1 | Current UTC time |
Self-hosting
Prefer your own instance? Run the published image:
docker run -p 8443:8443 \
-v /path/to/certs:/certs:ro \
ghcr.io/longbridge/longbridge-mcp \
--bind 0.0.0.0:8443 \
--base-url https://mcp.example.com \
--tls-cert /certs/cert.pem \
--tls-key /certs/key.pemSet
--base-urlto your externally reachable URL on any public deployment — it is published in the OAuth metadata clients use to discover the authorization server. It defaults tohttp://localhost:{port}, which remote clients cannot use.
Or build from source: cargo build --release && ./target/release/longbridge-mcp.
Config lives at ~/.longbridge/mcp/config.json (override the directory with LONGBRIDGE_MCP_CONFIG_DIR). CLI flags take precedence. When tls_cert and tls_key are both set the server runs HTTPS, otherwise HTTP; base_url defaults to https://localhost:{port} with TLS or http://localhost:{port} without.
Option | Config Key | CLI Flag | Default | Description |
Bind address |
|
|
| HTTP server listen address |
Base URL |
|
| auto | Public base URL for resource metadata |
Log directory |
|
| (stderr) | Directory for rolling log files |
TLS certificate |
|
| (none) | PEM certificate file for HTTPS |
TLS private key |
|
| (none) | PEM private key file for HTTPS |
Advanced environment variables — most deployments never touch these; they exist for non-production Longbridge environments and SDK debugging.
Variable | Default | Description |
|
| Config file directory |
|
| Longbridge API base URL (also used for OAuth metadata) |
| (none) | Comma-separated hostnames accepted from the edge-injected |
| (none) | Authorization-server URL advertised to requests arriving via an allowlisted |
|
| Quote WebSocket endpoint |
|
| Trade WebSocket endpoint |
|
| Idle seconds before a cached quote WebSocket context is evicted |
|
| Maximum cached quote WebSocket contexts per server process |
| (unset) |
|
| (none) | SDK internal log path. Leave unset in production — the SDK writes unfiltered request/response bodies there |
MCP requests and responses carry customer data — cash balances, positions, order history — and upstream SDK frames carry access tokens. None of it belongs in a log file, so the server caps the log targets that would print it, independent of RUST_LOG:
Target | Cap | What it would otherwise print |
|
| OpenAPI request and full response bodies (INFO) |
|
| Every WebSocket frame, auth token included (INFO) |
|
| Order push events (INFO) |
|
| Decoded MCP requests and full tool results (DEBUG), raw JSON-RPC frames (TRACE) |
So raising verbosity is safe: RUST_LOG=debug (or trace) gives you the server's own logs without leaking customer data. Two switches defeat this, both off by default — LONGBRIDGE_MCP_LOG_PAYLOADS=1 (removes the caps; use only against a test account locally) and LONGBRIDGE_LOG_PATH (makes the SDK write unfiltered bodies to that directory; the server warns at startup when set).
The server expects a Longbridge OAuth access token in Authorization: Bearer <token>. On missing or invalid auth it returns 401 with a WWW-Authenticate header pointing to the protected-resource metadata, which directs clients to the Longbridge OAuth authorization server.
Method | Path | Description |
GET |
| Protected Resource Metadata (RFC 9728) |
GET |
| Authorization Server Metadata (RFC 8414); advertises direct Longbridge authorize/register and proxied token/revoke endpoints |
POST |
| OAuth token proxy; derives |
POST |
| OAuth revocation proxy; derives |
GET |
| Prometheus metrics |
POST/GET/DELETE |
| MCP Streamable HTTP endpoint (requires Bearer token) |
Prometheus metrics: mcp_tool_calls_total (counter), mcp_tool_call_duration_seconds (histogram), and mcp_tool_call_errors_total (counter) — each labelled by tool_name.
Development
cargo +nightly fmt # format
cargo clippy # lint
cargo test # testLicense
Released under the MIT License.
Available Tools
165 toolsaccount_balanceAccount BalanceARead-onlyIdempotentInspect
Get account cash balance and asset summary. Returns balances[]{currency, total_cash, max_finance_amount, remaining_finance_amount, risk_level, margin_call}. Filter by currency (e.g. "USD", "HKD").
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Filter by currency code (e.g. "USD", "HKD"). Omit to return all currencies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. Description adds return structure and filtering context, enhancing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences covering action, return fields, and filtering. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description provides sufficient context for a simple tool with one optional parameter. Lists return fields, compensating for lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description mostly restates schema. No additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves account cash balance and asset summary, lists return fields, and mentions filtering by currency. Distinct from sibling tools like broker_holding or stock_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like broker_holding or cash_flow. Usage is implied but not differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_addAdd Price AlertAInspect
Add a price alert. condition: price_rise/price_fall (absolute price) or percent_rise/percent_fall (relative %). frequency: once/daily/every. Returns created alert object.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Threshold price or percentage value | |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| condition | Yes | Alert condition: "price_rise", "price_fall", "percent_rise", "percent_fall" | |
| frequency | No | Alert frequency: "once" (trigger once then disable), "daily" (once per day), "every" (alert every time condition is met) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that it returns the created alert object, but lacks details on side effects like whether duplicate alerts are allowed or if there are 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying essential information. No fluff or repetition. The structure is clear: purpose, then parameter options, then return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers basic usage, it lacks information about required parameter formats (e.g., price string format), potential errors, or prerequisites (e.g., symbol must exist). For a 4-parameter tool with no output schema, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining possible values for 'condition' and 'frequency' with examples (e.g., 'once (trigger once then disable)'). This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool adds a price alert, with specific verb 'Add' and resource 'price alert'. The description lists condition and frequency options, distinguishing it from sibling tools like alert_delete, alert_list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the condition and frequency options, which helps the agent know how to configure the alert. However, it does not explicitly state when to use this tool versus alternatives or when not to use it (e.g., if alerts already exist for the symbol).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_deleteDelete Price AlertADestructiveIdempotentInspect
Delete a price alert by alert_id (numeric string from alert_list). Returns upstream API response on success; errors if alert_id is invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | Alert indicator id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds that the tool returns the upstream API response on success and errors on invalid alert_id, which augments the behavioral understanding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the essential action and parameter source. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description adequately covers return behavior and error case. It aligns with sibling tools and annotations, though could mention irreversibility explicitly, but destructiveHint covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context to the sole parameter alert_id by specifying it is a 'numeric string from alert_list', clarifying its format and source beyond the schema's 'Alert indicator id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a price alert by alert_id (numeric string from alert_list)', specifying the action (delete), resource (price alert), and identifier (alert_id). It distinguishes from sibling tools like alert_add, alert_disable, alert_enable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates that the alert_id should come from alert_list, providing context for proper usage. However, it does not explicitly state when not to use this tool or contrast with alternatives like alert_disable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_disableDisable Price AlertAIdempotentInspect
Disable a price alert by alert_id. Use alert_list to find the numeric alert_id.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | Alert indicator id |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | |
| alert_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. Description adds minimal extra behavioral detail beyond 'disable', but does not contradict annotations. No mention of side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. Front-loaded with the action and parameter, then a helpful hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple idempotent disable operation with one parameter and an output schema, the description provides all necessary context to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers alert_id fully. Description adds meaning by noting it is numeric and directing to alert_list, surpassing baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Disable a price alert by alert_id', specifying verb and resource, and distinguishes from sibling tools like alert_delete and alert_enable by focusing on the disable action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use alert_list to find the numeric alert_id, which helps the agent understand prerequisite steps and when 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.
alert_enableEnable Price AlertAIdempotentInspect
Enable a price alert by alert_id. Use alert_list to find the numeric alert_id.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | Alert indicator id |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | |
| alert_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the description need not repeat that. The description adds that the tool enables a price alert, which is consistent. It does not provide extra behavioral details beyond what annotations cover, but does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no extraneous information. It front-loads the core action and then provides a useful pointer. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema (context indicates has output schema), the description covers the essential purpose and input sourcing. It does not mention prerequisites like whether the alert must exist or be disabled, but given annotations (idempotent, not destructive) and the tool's simplicity, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter alert_id. The description adds meaning beyond the schema's 'Alert indicator id' by stating that the alert_id is numeric and how to obtain it via alert_list. This helps the agent understand the parameter's nature and source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Enable') and the resource ('a price alert by alert_id'). It provides a specific verb and resource. However, it does not explicitly differentiate from siblings like alert_disable, though the action itself distinguishes it. The mention of alert_list helps contextualize the input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear prerequisite: 'Use alert_list to find the numeric alert_id.' This is helpful but lacks guidance on when to use this tool versus alternatives like alert_disable or when not to use it (e.g., if alert is already enabled). No explicit when/why is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_listList Price AlertsARead-onlyIdempotentInspect
Get all configured price alerts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| lists | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description adds no extra behavioral context. It does not contradict the annotations, but it also does not elaborate on traits like empty list behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous information. It is front-loaded and efficiently conveys the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema present. The description is sufficient for basic understanding, though it could mention that the output is a list of alert objects. Given the output schema, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100%. Per guidelines, baseline is 4. The description adds no parameter details, which is acceptable given no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all configured price alerts', making the tool's purpose unambiguous. It differentiates from sibling tools like alert_add and alert_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to list versus add or delete alerts. No context about appropriate situations 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.
anomalyMarket AnomalyARead-onlyIdempotentInspect
Get market anomaly alerts (unusual price/volume changes). market: HK/US/CN/SG. symbol: optional, filter to a specific stock. count: results per page (default 50, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 50, max: 100) | |
| market | Yes | Market code: HK, US, CN, SG | |
| symbol | No | Filter to a specific symbol, e.g. "700.HK" or "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| all_off | No | |
| changes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and nondestructive behavior. The description adds value by explaining what constitutes an anomaly and the default parameter behavior, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first sentence defines purpose, second sentence lists parameters with defaults. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 3 parameters and an output schema, the description covers all necessary information: purpose, parameter roles, and defaults. It is self-contained for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description concisely summarizes each parameter's purpose and values (e.g., market codes, optional symbol, count default/max), adding practical context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Get market anomaly alerts', clearly stating the action and resource. It specifies the nature of anomalies as 'unusual price/volume changes' and lists parameter roles, distinguishing it from sibling tools like candlesticks or quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for anomaly detection but does not explicitly state when to use this tool over alternatives such as market_temperature or top_movers. No exclusion or comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bank_cardsBank CardsARead-onlyIdempotentInspect
List linked withdrawal bank cards for the current account. Returns cards[]{id, bank_name, account_number (masked), currency, status}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds that account numbers are masked and specifies the exact fields returned, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second lists return fields. No redundancy, front-loaded, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no parameters and no output schema, the description fully explains what it does and what it returns. Additional context like 'linked withdrawal bank cards' and masked account numbers enhances completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. Baseline for zero parameters is 4, and the description correctly provides no parameter information as none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists linked withdrawal bank cards for the current account. Defines specific fields returned (id, bank_name, account_number masked, currency, status), making it unambiguous and distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives like account_balance or broker_holding. The description only states what it does, without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_holdingBroker HoldingARead-onlyIdempotentInspect
Get top broker holding data for a symbol (HK stocks only; sourced from HKEX CCASS participant disclosure).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Period: "rct_1" (1 day, default), "rct_5" (5 days), "rct_20" (20 days), "rct_60" (60 days) | |
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by specifying the data source (HKEX CCASS participant disclosure) and that it returns 'top' holdings. This complements the readOnlyHint and other annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that conveys all essential information without extraneous text. It is front-loaded with the main action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full schema, annotations, and output schema, the description adequately covers the tool's scope, data source, and limitation to HK stocks. It is complete for a simple data retrieval tool with good structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions. The description adds general context (HK stocks) but does not describe the period parameter beyond what the schema already provides. Thus, the description adds little semantics over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('top broker holding data'), and the constraint ('for a symbol (HK stocks only)'). It distinguishes from siblings like broker_holding_daily by specifying 'top' and the source (HKEX CCASS).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly limits usage to HK stocks and identifies the data source, providing clear context. However, it does not explicitly mention when not to use or suggest alternative tools for other markets or full holding details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_holding_dailyBroker Holding (Daily)ARead-onlyIdempotentInspect
Get daily holding history for a specific broker (by broker_id) in a symbol (HK stocks only; sourced from HKEX CCASS participant disclosure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| broker_id | Yes | Broker participant number |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safety and idempotency. Description adds context about data source and daily frequency, but does not disclose additional behavioral traits like rate limits or pagination. Baseline 3 since annotations cover 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action and scope. No superfluous words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists to document return values, and annotations cover safety, the description is adequate. It specifies source and scope, though date range or history depth is missing. Still fairly complete for a data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. Description restates purpose but does not add new meaning beyond schema (e.g., format or constraints). Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves daily holding history for a specific broker and symbol, with explicit scope (HK stocks) and data source (HKEX CCASS). Distinguishes from siblings like broker_holding and broker_holding_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for HK stocks only, but no explicit guidance on when to use this tool vs. alternatives (e.g., broker_holding, broker_holding_detail). No when-not or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_holding_detailBroker Holding DetailBRead-onlyIdempotentInspect
Get full broker holding detail list for a symbol (HK stocks only; sourced from HKEX CCASS participant disclosure).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds context about data source (HKEX CCASS) and market restriction (HK stocks only), which is useful but does not elaborate on the 'detail list' nature or pagination. It provides some 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence (15 words) with no extraneous information. It front-loads the key action 'Get full broker holding detail list' and efficiently conveys constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (1 param, no enums) and presence of an output schema, the description is adequate but lacks differentiation from sibling tools. It does not explain what makes this 'detail' versus other broker holding tools, which is a gap for an agent deciding between them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'symbol' has a clear description. The tool description does not add any additional meaning beyond stating it is 'for a symbol', which is already covered by the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a 'full broker holding detail list for a symbol', with specific constraints (HK stocks only, sourced from HKEX CCASS). This distinguishes it from sibling tools like 'broker_holding' and 'broker_holding_daily' by implying a more detailed list, 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.
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 its siblings (e.g., 'broker_holding' or 'broker_holding_daily'). There is no mention of prerequisites, limitations, or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brokersBroker QueueARead-onlyIdempotentInspect
Get broker queue (HK stocks only). Map broker IDs to names via participants.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| ask_brokers | Yes | |
| bid_brokers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds value by noting that results contain broker IDs that need mapping via 'participants', which is behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver all key information: action, scope, and output interpretation. No wasted words; front-loaded with the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and an output schema, the description is complete. It states the scope (HK stocks only), explains the result (broker IDs) and how to interpret them (via participants), which is sufficient for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'symbol', including a clear example. The description adds no additional parameter semantics beyond what the schema 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get broker queue') and resource ('HK stocks only'), and distinguishes from siblings by noting the need to map broker IDs via the 'participants' tool. It is 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for HK stocks broker queue but does not explicitly state when to use this tool versus alternatives like 'broker_holding' or 'participants'. The 'HK stocks only' constraint provides some guidance but lacks full context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_segmentsBusiness SegmentsARead-onlyIdempotentInspect
Get current-period business segment revenue breakdown for a symbol (name, percent, total, currency)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the return fields (name, percent, total, currency) and confirming it is a revenue breakdown, which aligns with annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. All information is front-loaded and necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, no output schema, and strong annotations, the description is complete. It clearly conveys the purpose and return format, leaving no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for 'symbol'. The tool description does not add additional meaning beyond the schema's example ('AAPL.US'), so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get current-period business segment revenue breakdown for a symbol', specifying the verb (Get), resource (business segment revenue breakdown), and scope (current-period, for a symbol). It also lists the components (name, percent, total, currency), and the sibling 'business_segments_history' indicates a distinct purpose for historical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for current-period data but does not explicitly state when to use this versus alternatives like 'business_segments_history'. No guidance on exclusions or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_segments_historyBusiness Segments HistoryARead-onlyIdempotentInspect
Get historical business segment revenue trends (by period and category).
| Name | Required | Description | Default |
|---|---|---|---|
| cate | No | Segment category filter | |
| report | No | Report period: "qf" (quarterly), "saf" (semi-annual), "af" (annual) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| historical | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds historical context but no additional behavioral traits beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, front-loaded with key information, and contains no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, 3 parameters, and presence of output schema and annotations, the description is adequate but lacks differentiation from sibling tools like 'business_segments'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description mentions 'period' and 'category' which map to 'report' and 'cate', but adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'historical business segment revenue trends', and specifies grouping 'by period and category'. It effectively distinguishes from the sibling 'business_segments' which implies current data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies historical context, but does not mention alternatives or exclusions relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calc_indexesCalc IndexesARead-onlyIdempotentInspect
Calculate financial indexes for symbols. Pass symbols, and optionally indexes (e.g. ["PeTtmRatio","PbRatio","LastDone","TurnoverRate"]). When indexes is omitted or empty, defaults to ["LastDone","ChangeValue","ChangeRate","Volume","PeTtmRatio","PbRatio","DividendRatioTtm","TurnoverRate","TotalMarketValue"]. Returns per-symbol index values.
| Name | Required | Description | Default |
|---|---|---|---|
| indexes | No | Calc indexes (optional; defaults to LastDone, ChangeValue, ChangeRate, Volume, PeTtmRatio, PbRatio, DividendRatioTtm, TurnoverRate, TotalMarketValue): LastDone, ChangeValue, ChangeRate, Volume, Turnover, YtdChangeRate, TurnoverRate, TotalMarketValue, CapitalFlow, Amplitude, VolumeRatio, PeTtmRatio, PbRatio, DividendRatioTtm, FiveDayChangeRate, TenDayChangeRate, HalfYearChangeRate, FiveMinutesChangeRate, ExpiryDate, StrikePrice, UpperStrikePrice, LowerStrikePrice, OutstandingQty, OutstandingRatio, Premium, ItmOtm, ImpliedVolatility, WarrantDelta, CallPrice, ToCallPrice, EffectiveLeverage, LeverageRatio, ConversionRatio, BalancePoint, OpenInterest, Delta, Gamma, Theta, Vega, Rho | |
| symbols | Yes | Security symbols, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral details: default index list, optional parameter handling, and per-symbol return, without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with clear front-loading: purpose first, then parameter usage, default behavior, and return format. No unnecessary words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and full schema coverage, the description covers purpose, parameters, defaults, and return. It is sufficient for an agent to use the tool, though it lacks details like error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented. The description adds value by explaining the default behavior when 'indexes' is omitted or empty, listing the exact default set, which is not fully apparent from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates financial indexes for symbols, specifying the verb 'calculate' and the resource 'financial indexes'. It lists default indexes, distinguishing it from other data retrieval tools like 'quote' or 'now' which return different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool—for symbols with optional indexes—and describes default behavior when indexes are omitted. However, it does not explicitly state when not to use it or contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderCancel OrderADestructiveIdempotentInspect
Cancel an open order by order_id. Returns plain text "order cancelled" on success; errors if the order is already filled or cancelled. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed that exact order. The code is derived from the order itself, so it applies only to that exact order. Never quote it back on your own initiative, and never in the same turn the user first asks. The dry run also echoes the order being targeted so the user can verify it is the right one.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed that exact order. The code is single use, expires in 10 minutes, and applies only to this exact order — change any field and it stops working. Never quote it back on your own initiative, and never in the same turn the user first asks. | |
| order_id | Yes | Order ID to cancel (from today's orders or order history) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description discloses crucial behavioral traits: dry-run-vs-execute semantics, the mandatory two-step confirmation flow, the code being derived from and bound to the exact order, the single-use nature, the never-quote-back rule, and the return format. This substantially enriches what the annotations alone convey and aligns with them — no contradiction with destructiveHint=true or idempotentHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but the length is justified for a destructive tool with a mandatory confirmation flow. It is front-loaded with purpose and return behavior before diving into the safety protocol. Minor redundancy exists ("derived from the order" and "applies only to that exact order" say nearly the same thing; "never in the same turn the user first asks" partially overlaps with "after the user has explicitly confirmed"), but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity destructive tool with no output schema, the description covers everything an agent needs: success return value, error conditions, the exact call sequence, the confirmation-code constraints, and how the user can verify the targeted order. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema's execute parameter already documents the full confirmation protocol including 10-minute expiry and single-use behavior. The description reinforces this content but does not meaningfully add beyond the structured schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement — "Cancel an open order by order_id" — that precisely identifies the action, the target, and the required identifier. The scope (open orders only) plus the error-on-filled/cancelled clause clearly differentiates it from siblings like submit_order, replace_order, and grid_cancel without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides unusually explicit procedural guidance: call once without execute for a dry run, show the preview to the user, then call again with execute only after explicit confirmation. The "errors if the order is already filled or cancelled" clause is an implicit when-not condition. However, no sibling alternatives are explicitly named (e.g., pointing to replace_order when modification rather than cancellation is wanted), so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
candlesticksCandlesticksBRead-onlyIdempotentInspect
Get candlestick data (OHLCV). Only symbol is required; period defaults to day, count to 100 (max 1000), forward_adjust to false, trade_sessions to all. period: 1m/5m/15m/30m/60m/day/week/month/year. trade_sessions: intraday/all
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of candlesticks (optional, max 1000; default 100) | |
| period | No | Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day) | day |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| forward_adjust | No | Whether to forward-adjust for splits/dividends (default: false / no adjust) | |
| trade_sessions | No | Trade sessions: "intraday" (regular hours only) or "all" (include pre-market and post-market; default "all") | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that the tool gets OHLCV data but does not disclose additional behavioral traits like response format, rate limits, or data source behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise and front-loaded. Two sentences: first gives function and defaults, second lists period and trade_sessions options. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate but incomplete. The description provides basics but does not explain response structure, data ordering, or how to interpret results. Lacks details that would be needed given the absence of an output schema and presence of sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by summarizing defaults and enumerating allowed values for period and trade_sessions, providing a quick reference beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves candlestick data (OHLCV) and lists default parameter values. However, it does not differentiate this tool from sibling candlestick tools like history_candlesticks_by_date or history_candlesticks_by_offset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool vs alternatives. No context on when to choose candlesticks over other tools that provide price data, such as intraday or history_candlesticks_by_date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capital_distributionCapital DistributionBRead-onlyIdempotentInspect
Get capital distribution for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| timestamp | Yes | |
| capital_in | Yes | |
| capital_out | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, which convey safety and idempotency. The description adds no further behavioral context (e.g., rate limits, data freshness, or side effects), but with annotations present, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. It is concise but perhaps overly terse; however, it earns its place by stating the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and rich annotations, so the description's job is reduced. It adequately states what the tool does but lacks context about the returned data structure. Overall sufficient but not enhanced beyond minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the required symbol parameter. The description 'for a symbol' adds no new 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get capital distribution for a symbol' with a specific verb and resource. It distinguishes from siblings like capital_flow and dividend, though it does not elaborate on what 'capital distribution' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like capital_flow or dividend. Context signals list many sibling tools, but the description lacks any comparative or contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capital_flowCapital FlowARead-onlyIdempotentInspect
Get capital inflow/outflow time series. Returns items[]{timestamp, inflow, outflow, net_flow} for the symbol (same-day data).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds value by specifying the return format and that data is same-day, providing context beyond the structured fields without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and return structure. No extraneous text; every word is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and robust annotations, the description is complete. It explains the return structure, timeliness, and parameter usage without needing an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'symbol' parameter described. The description adds meaning by detailing the return structure and timeliness (same-day data), which helps the agent understand what the tool produces beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves capital inflow/outflow time series data, specifies the return structure (items with timestamp, inflow, outflow, net_flow), and notes it is same-day data. This verb+resource+scope is specific and distinguishes it from similar financial data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining capital flow data but does not explicitly state when to use versus alternatives like capital_distribution or other financial time series tools. No when-not-to-use or alternative tool guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cash_flowCash FlowARead-onlyIdempotentInspect
Get cash flow records (deposits, withdrawals, dividends). Returns items[]{transaction_type, amount, currency, balance, created_at, remark}. start_at/end_at in RFC3339.
| Name | Required | Description | Default |
|---|---|---|---|
| end_at | Yes | End time (RFC3339) | |
| start_at | Yes | Start time (RFC3339) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds the return structure and parameter format, which provides useful context beyond annotations, but not extensive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. First sentence states purpose and return fields, second sentence specifies parameter format. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists the return fields (items[] with transaction_type, amount, etc.) and parameter format. Combined with annotations, this is complete for a simple query tool with two required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described as RFC3339 strings. The description reinforces the format but adds no new meaning beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'cash flow records', and specifies the types included (deposits, withdrawals, dividends). It also lists the return fields, making the purpose unambiguous and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving cash flow records with specific transaction types, but does not explicitly state when to use alternatives like 'deposits' or 'withdrawals'. It provides clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
companyCompany ProfileARead-onlyIdempotentInspect
Get company overview. US accounts querying a .US symbol get a differently-shaped response not matching output_schema (intro, market_cap, top_rank_tags, sharelist, detail_url); other combinations match output_schema.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| ceo | No | |
| name | No | |
| intro | No | |
| website | No | |
| exchange | No | |
| industry | No | |
| employees | No | |
| ccy_symbol | No | |
| detail_url | No | |
| market_cap | No | |
| share_list | No | |
| description | No | |
| founded_year | No | |
| top_rank_tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by warning that responses for US accounts querying .US symbols will not match the output schema, which is valuable for an agent to anticipate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded. The first sentence states the core purpose, and the second sentence adds a valuable edge-case warning without unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one well-documented parameter and an output schema, the description covers the main function and the notable exception. No significant gaps remain given the structured annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'symbol' with a description and example, so the description need not add much. The description does not provide additional parameter semantics beyond what the schema already offers, which is acceptable at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function as 'Get company overview' with a specific verb and resource. However, it does not explicitly differentiate this tool from sibling tools like static_info or quote, aside from the implied subject matter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions a special case for US accounts querying .US symbols, but does not clarify broader scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consensusAnalyst ConsensusARead-onlyIdempotentInspect
Get financial consensus estimates for upcoming periods. US accounts querying a .US symbol get a differently-shaped response not matching output_schema (ai_summary plus a details[] list per period); other combinations match output_schema.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| items | No | |
| report | No | |
| currency | No | |
| ai_summary | No | |
| opt_reports | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description discloses a critical behavioral trait: the response may not match the output schema for US accounts querying .US symbols, adding valuable context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: the first states the core function, the second addresses a critical edge case. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, response shape inconsistency, and references the output schema. It lacks elaboration on what 'consensus estimates' includes (e.g., metrics, timeframes), but the output schema likely fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'symbol' is fully described in the schema. The description adds no new meaning about the parameter itself, but it does tie symbol usage to response shape, which is a behavioral nuance rather than semantic expansion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves financial consensus estimates for upcoming periods. However, it does not distinguish from similar sibling tools like forecast_eps or institutional_views, so it lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching consensus estimates but provides no guidance on when to use this tool versus alternatives. It notes a response shape difference for US accounts with .US symbols but does not suggest exclusions or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
constituentIndex Constituents / ETF Asset AllocationARead-onlyIdempotentInspect
Get the constituents of an index or the asset allocation of an ETF. For an index (e.g. HSI.HK, .DJI.US) returns constituents[]{symbol, name, last_done, change_rate, market_cap, weight}. For an ETF (e.g. QQQ.US, 2800.HK) returns the asset allocation as info[] grouped by asset_type: 1=Holdings (top constituents with code, symbol, holding_detail), 2=Regional (country/region breakdown), 3=AssetClass (stock/bond/cash etc.), 4=Industry (sector breakdown). Each group has report_date and lists[]{name, position_ratio, name_locales}; Holdings groups additionally include code, symbol and holding_detail{industry_name, index_name, holding_type_name}.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Index symbol, e.g. "HSI.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value beyond annotations by detailing the different response structures for indexes and ETFs, including groupings and fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise given the complexity, with clear separation of index and ETF modes using bullet points. A slight reduction in detail could be made, but no extraneous sentences are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully covers the return structure, including fields, groupings, and examples for both modes. It provides sufficient context for an agent to understand the output without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description. The tool description enhances this by explaining the valid symbol types (index vs ETF) and providing examples, which adds context beyond the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool retrieves constituents of an index or asset allocation of an ETF, using specific verbs ('Get') and resources ('constituents', 'asset allocation'). It distinguishes between the two use cases with detailed output examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the tool's context (index vs ETF) but does not compare it to sibling tools like 'fund_positions' or provide when-not-to-use guidance. It is clear enough for most agents to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corp_actionCorporate ActionsARead-onlyIdempotentInspect
Get corporate actions (splits, buybacks, name changes).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a few example event types but provides no extra behavioral context such as result scope, response size, or whether historical events are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to conveying the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one required parameter), strong annotations, and presence of an output schema, the description is sufficiently complete for an agent to understand and invoke the tool. No return-value clarification is needed because the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'symbol' is fully described in the schema with an example ('700.HK'). Schema description coverage is 100%, so the description does not need to add much. It adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: 'Get corporate actions' with concrete examples ('splits, buybacks, name changes'). This is a specific verb + resource, but it does not explicitly distinguish itself from closely related sibling tools like dividend or capital_distribution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as dividend, capital_distribution, or other corporate-event tools. The intended use is only implied by the tool name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_watchlist_groupCreate Watchlist GroupAInspect
Create a new watchlist group. Optionally pass securities (e.g. ["AAPL.US", "700.HK"]) to pre-populate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name | |
| securities | No | Securities to add, e.g. ["700.HK", "AAPL.US"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-destructive behavior. Description adds context about optional pre-population, which is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with two parameters and an output schema, the description is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are described in the schema with 100% coverage. Description mentions the optional securities parameter but adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new watchlist group' with verb and resource, and distinguishes from sibling tools like delete_watchlist_group and update_watchlist_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies optional use case with securities parameter, providing an example. No explicit when-not-to-use or alternatives, but the context is straightforward for a creation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_checkCheck DCA SupportARead-onlyIdempotentInspect
Check whether given symbols support DCA recurring investment.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Security symbols to check, e.g. ["AAPL.US", "TSLA.US"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds no behavioral context beyond what annotations provide, so it neither enhances nor contradicts them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded with the main action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations and output schema, the description is mostly adequate. It could mention the output format or edge cases, but it is sufficient for a straightforward check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single parameter. The tool description does not add extra 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks symbol support for DCA recurring investment. It uses a specific verb 'check' and resource 'symbols', and distinguishes it from sibling DCA tools like dca_create, dca_list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other DCA-related tools (e.g., dca_list, dca_stats). It does not mention prerequisites, alternatives, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_createCreate DCA PlanBInspect
Create a DCA recurring investment plan. frequency: Daily/Weekly/Monthly. day_of_week (Weekly): Mon/Tue/Wed/Thu/Fri. day_of_month (Monthly): 1-28.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount to invest per cycle, e.g. "100" | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" | |
| frequency | Yes | Investment frequency: Daily, Weekly, Monthly | |
| day_of_week | No | Day of week for Weekly frequency: Mon, Tue, Wed, Thu, Fri | |
| allow_margin | No | Allow margin financing (default false) | |
| day_of_month | No | Day of month for Monthly frequency (1-28) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as non-readOnly and non-destructive. The description adds no further behavioral context, such as whether creation is instantaneous, if it requires confirmation, or if duplicate plans are allowed. It repeats schema info without enriching the agent's understanding of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and avoids unnecessary words. However, it could be better structured (e.g., bullet points) for clarity. It earns a high score for conciseness but loses a point for lack of organization.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no output schema, and many DCA-related sibling tools, the description is too sparse. It fails to explain what a DCA plan entails (e.g., recurring investments, how funds are sourced), what the response contains, or any constraints like minimum amounts. This inadequacy forces the agent to rely on trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description restates frequency options and day parameters but adds no meaning beyond what the schema already provides. It does not explain 'amount' semantics (e.g., currency, decimal precision) or 'allow_margin' implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Create) and resource (DCA recurring investment plan). The name 'dca_create' reinforces this purpose. Among sibling tools like dca_list, dca_update, dca_stop, this is distinctly the creation tool, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as having a funded account, or that an existing plan might need updating via dca_update instead. There's no mention of when not to create a plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_historyDCA Execution HistoryARead-onlyIdempotentInspect
Get execution history records for a DCA plan by plan_id.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Records per page (default 20) | |
| plan_id | Yes | Plan ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| executions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds no extra behavioral context, such as pagination behavior, rate limits, or data freshness. It minimally repeats the 'get' operation already implied 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it could include brief contextual detail without becoming verbose, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (fetch by plan_id) with full schema coverage and an output schema (not shown). The description is adequate for a read-only, idempotent retrieval. It lacks mention of pagination defaults but schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented in the schema. The description only mentions plan_id, missing page and limit. It adds no meaning beyond what the schema provides, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'execution history records', and the scope 'by plan_id'. It effectively distinguishes from sibling DCA tools like dca_list (which lists plans) and dca_stats (statistics), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving history by plan_id but provides no explicit guidance on when to use this versus alternatives like dca_list or dca_stats. No when-not-to-use conditions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_listList DCA PlansARead-onlyIdempotentInspect
List DCA recurring investment plans. Filter by status (Active/Suspended/Finished) or symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Records per page (default 20) | |
| status | No | Filter by status: Active, Suspended, Finished. Omit to return all. | |
| symbol | No | Filter by symbol, e.g. "AAPL.US". Omit to return all plans. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plans | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations fully cover behavioral aspects (readOnlyHint, idempotentHint, destructiveHint). The description adds value by specifying the resource and filtering, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, includes essential filtering info without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and output schema present, the description provides sufficient context for a simple list tool: resource, filtering, and safe operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats filter details already in schema, adding minimal extra meaning beyond summarizing status values and symbol.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), resource (DCA recurring investment plans), and filtering options (status, symbol). It distinguishes from sibling tools like dca_create, dca_update, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (listing plans) and filtering options. However, it does not explicitly state when not to use it or mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_pausePause DCA PlanAIdempotentInspect
Pause (suspend) a DCA plan by plan_id. The plan stops executing until resumed. Returns upstream API response. Use dca_resume to restart.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true) indicate a non-destructive, idempotent mutation. The description adds that the plan stops executing until resumed and returns the upstream API response, which is valuable context beyond annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably concise, consisting of only two sentences. It front-loads the core action and purpose, and every sentence adds necessary information without redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is complete. It explains the action, effect, return type, and provides a cross-reference to the resume tool. No additional information is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (plan_id) described as 'Plan ID'. The description does not add any additional meaning, constraints, or examples for the parameter beyond what the schema provides, so it meets the baseline but offers no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Pause (suspend) a DCA plan'), identifies the resource ('DCA plan'), specifies the required parameter ('by plan_id'), describes the effect ('stops executing until resumed'), and distinguishes from sibling tools like dca_resume and dca_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (to pause a DCA plan) and directs to an alternative: 'Use dca_resume to restart.' This provides clear guidance on appropriate usage and distinguishes from the resume counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_resumeResume DCA PlanAIdempotentInspect
Resume a suspended DCA plan by plan_id. Resumes automated execution on the configured schedule. Returns upstream API response.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that it resumes execution and returns upstream API response. Annotations already indicate mutation (readOnlyHint false) and idempotency (idempotentHint true). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste. Front-loaded with action, then effect and response.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with one param and no output schema. Lacks details on error conditions or response structure, but sufficient for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers plan_id with description 'Plan ID'. Description mentions it as 'by plan_id' but adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'resume' and resource 'DCA plan', with the condition 'suspended'. Distinguishes from siblings like dca_pause, dca_stop, dca_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to resume a suspended plan, implying the context. No exclusions or alternatives mentioned, but the purpose is self-contained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_statsDCA StatisticsCRead-onlyIdempotentInspect
Get DCA investment statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol, e.g. "AAPL.US". Omit to return stats for all plans. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| plan_count | No | |
| return_rate | No | |
| total_value | No | |
| total_return | No | |
| total_invested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) clearly indicate it is a safe read operation. The description adds no further behavioral context, but the annotations shoulder the burden, so a neutral score 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. While it is concise, it could benefit from more detail without becoming verbose, so it earns a 4 for being efficiently minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too minimal for a tool that likely returns complex statistics. Even though an output schema exists, the description should hint at the nature of 'statistics' (e.g., returns metrics like cost basis, returns, etc.) to help the agent judge usefulness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a detailed description for the 'symbol' parameter. The tool description adds no additional meaning beyond what the schema already states, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Get DCA investment statistics,' which states a verb and resource, but it is vague given the numerous sibling DCA tools (dca_list, dca_history, dca_check, etc.). It does not specify what 'statistics' means or how it differs from other DCA endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent to guess the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_stopStop DCA PlanADestructiveIdempotentInspect
Permanently stop a DCA plan by plan_id. This cannot be undone. To temporarily pause, use dca_pause instead. Returns upstream API response.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and idempotentHint=true. The description reinforces the permanence ('cannot be undone') and adds the return value ('Returns upstream API response'), providing useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. The action, consequence, alternative, and return info are all front-loaded efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (single param, no output schema), the description fully covers purpose, usage guidance, behavioral impact, and return value. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (plan_id) with 100% schema description coverage. The description does not add semantic detail beyond what the schema provides, but the baseline for high coverage is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Permanently stop a DCA plan'), the resource ('DCA plan'), and the required identifier ('by plan_id'). It also emphasizes the irreversibility, distinguishing it from the sibling tool dca_pause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool versus the alternative: 'To temporarily pause, use dca_pause instead.' This provides clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_updateUpdate DCA PlanADestructiveIdempotentInspect
Update an existing DCA plan by plan_id. Can change amount, frequency (Daily/Weekly/Monthly), day_of_week (Mon-Fri), or day_of_month (1-28). Returns updated plan.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | New investment amount per cycle | |
| plan_id | Yes | Plan ID to update | |
| frequency | No | New investment frequency: Daily, Weekly, Monthly | |
| day_of_week | No | Day of week for Weekly frequency: Mon, Tue, Wed, Thu, Fri | |
| allow_margin | No | Allow margin financing | |
| day_of_month | No | Day of month for Monthly frequency (1-28) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds that the tool returns the updated plan, but doesn't disclose additional behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and key parameter, then detail modifiable fields and values with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete enough given tool simplicity: describes input fields, return (updated plan), and allowed values. Lacks output schema and error handling but sufficient for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by specifying allowed values for frequency, day_of_week, and day_of_month, though it omits the allow_margin parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing DCA plan by plan_id and lists modifiable fields, distinguishing it from sibling tools like dca_create, dca_stop, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description (update an existing plan), but no explicit guidance on when to use versus alternatives like dca_pause or dca_stop is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_watchlist_groupDelete Watchlist GroupADestructiveIdempotentInspect
Delete a watchlist group by id (numeric). Set purge=true to also remove its securities from all other groups.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Watchlist group id | |
| purge | Yes | Whether to also remove the securities from other groups |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds valuable context about the purge parameter, explaining side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a two-sentence, front-loaded structure with no extraneous information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with a purge flag and an output schema, the description covers core behavior and the purge option. Minor lack of detail on default behavior (securities when purge=false).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a watchlist group by id (numeric)', specifying the verb and resource. It effectively distinguishes from sibling tools like create_watchlist_group and update_watchlist_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when deleting a watchlist group but provides no explicit guidance on when to use this tool versus alternatives, or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depositsDepositsARead-onlyIdempotentInspect
List deposit history for the current account. Returns items[]{id, amount, currency, status, created_at, updated_at}. states: comma-separated (Pending/Finished/Failed). currencies: comma-separated codes.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| states | No | Filter by deposit states (comma-separated) | |
| currencies | No | Filter by currencies (comma-separated, e.g. "USD,HKD") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, etc. The description adds behavioral details about return format and filter syntax, which is sufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes all necessary details without redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains return fields and filter options. It lacks pagination details but the schema covers that. Adequate for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all four parameters. The description adds clarity by specifying comma-separated formats and an example for currencies, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List deposit history for the current account', using a specific verb and resource. It lists return fields and distinguishes from siblings like account_balance or withdrawals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for listing deposit history but lacks comparisons or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depthOrder Book DepthARead-onlyIdempotentInspect
Get order book depth for a symbol. Up to 10 price levels.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| asks | Yes | |
| bids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds the limit of 10 price levels, which is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded, and contains no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and existence of an output schema, the description is mostly complete, though it could clarify that depth includes bid/ask levels for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes the sole parameter 'symbol' with examples, achieving 100% coverage. The tool description adds no extra parameter information, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'order book depth for a symbol' with a limit of 10 price levels, which is specific and distinguishes it from siblings like quote or candlesticks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as quote or market_temperature; the description only explains what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dividendDividendARead-onlyIdempotentInspect
Get dividend history for the symbol. US accounts querying a .US symbol get a differently-shaped response not matching output_schema (dividend_yield_ttm etc. are percent values, e.g. 0.34 means 0.34%); other combinations match output_schema.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| payout_ratios | No | |
| dividend_history | No | |
| recent_dividends | No | |
| dividend_payout_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds behavioral context about response shape variation for US accounts and percent value interpretation, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. First sentence states core purpose, second adds critical caveat. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has one parameter, good annotations, and an output schema exists (noted in description). The description covers the main behavior and a key exception, sufficient for a simple query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with a single symbol parameter. Description adds semantic nuance by explaining that the response shape depends on the symbol and account type, going beyond the schema's definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get dividend history for the symbol' with a specific verb and resource. It distinguishes from siblings by noting a special response case for US accounts querying .US symbols.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative tools mentioned. The description implies caution for US accounts with .US symbols but does not compare to sibling tools like dividend_detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dividend_detailDividend DetailBRead-onlyIdempotentInspect
Get detailed dividend distribution scheme.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| details | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds minimal behavioral context. It does not disclose any additional traits such as response size, rate limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. However, it could be slightly expanded to include context about the output or differentiation from siblings without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and an output schema, the description adequately states the purpose. It could be more complete by mentioning that it provides detailed data versus the summary from the sibling 'dividend' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'symbol' is fully described in the schema (100% coverage), and the description adds no additional meaning beyond the schema's definition. Baseline of 3 is appropriate since schema already covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Get' and specifies 'detailed dividend distribution scheme,' clearly indicating the tool retrieves detailed dividend data. While it is distinct from the sibling 'dividend' (likely a list or summary), the description does not explicitly differentiate it from other dividend-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'dividend' or 'capital_distribution.' There is no mention of prerequisites, context, or excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_max_purchase_quantityEstimate Max Purchase QuantityARead-onlyIdempotentInspect
Estimate maximum buy/sell quantity for a symbol. Only symbol is required; side (case-insensitive Buy/Sell) defaults to Buy, order_type (case-insensitive) defaults to LO, and price is optional.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Buy or Sell (case-insensitive; default: Buy) | Buy |
| price | No | Limit price for limit-style orders. Omit for market orders. | |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| order_type | No | Order type, case-insensitive (default: LO): LO (Limit Order) / ELO (Enhanced Limit Order) / MO (Market Order) / AO (At-auction) / ALO (At-auction Limit Order) | LO |
Output Schema
| Name | Required | Description |
|---|---|---|
| cash_max_qty | Yes | |
| margin_max_qty | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, and non-destructive. The description adds case-insensitivity and default behavior, which is helpful but does not contradict annotations. Adds value beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys core purpose and key defaults. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return values need not be explained. The description covers required parameters, defaults, and optional fields adequately. Could mention that it estimates max quantity, but title already implies. Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context by stating required parameter 'symbol', defaults for 'side' and 'order_type', and optional 'price', along with case-insensitivity. This enhances usability beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Estimate maximum buy/sell quantity for a symbol' with specific verb and resource. It clearly distinguishes from sibling tools like submit_order or quote by focusing on estimation, not execution or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides defaults for side, order_type, and notes price is optional. While it doesn't explicitly say when to use vs alternatives, the context of estimation vs order placement is clear. No direct exclusions but sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
etf_docsETF Documents (US)ARead-onlyIdempotentInspect
Get regulatory/prospectus documents (etf-files) for a US ETF. US accounts only; errors with DcRegionRestricted for HK/CN/SG accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of documents to return. Omit for all. | |
| symbol | Yes | ETF symbol, e.g. "SPY.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the region-restriction error behavior (DcRegionRestricted), which is valuable context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two brief sentences front-loading the primary action, with no extraneous information. Every word contributes to understanding the tool's purpose and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not detailed here), description adequately covers purpose, region restriction, and error condition. It could mention document types or ordering, but is sufficient for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both 'symbol' and 'limit'. The description does not add any additional parameter meaning beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves regulatory/prospectus documents for US ETFs, using specific verb 'Get' and resource 'regulatory/prospectus documents'. It distinguishes from sibling tools like 'filings' by specifying ETF focus and US-only restriction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'US accounts only' and warns about region restrictions (errors for HK/CN/SG), providing clear context on when to use. It does not explicitly exclude alternatives, but no direct alternative exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exchange_rateExchange RateARead-onlyIdempotentInspect
Get exchange rates for all supported currencies. Returns list[]{from_currency, to_currency, rate, timestamp} covering USD, HKD, CNY, SGD and others.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds the output structure and specific currencies, which is helpful but does not provide additional behavioral details such as update frequency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, front-loaded with the key action. Every sentence adds value, specifying the output structure and example currencies with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless tool, the description adequately covers the purpose and output. It mentions the output format and sample currencies, which is sufficient. It could list all currencies for completeness, but the given level is satisfactory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description does not need to add parameter semantics. It correctly omits param details but does not provide extra information beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves exchange rates for all supported currencies, listing specific currencies and the output format. It is distinguishable from sibling tools, none of which directly cover exchange rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when exchange rates are needed, but provides no explicit guidance on when to use this tool versus alternatives or when not to use it. Given the tool's simplicity, the lack of alternatives is acceptable but still missing explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
executiveExecutiveBRead-onlyIdempotentInspect
Get company executive and board member information.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| members | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, and the description is consistent with these. However, it adds no context beyond the resource being fetched, such as whether the data pertains to a specific market or time period.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose without redundancy. It contains no filler or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one fully documented parameter, annotations covering safety, and an output schema present. However, the description lacks usage guidance and does not differentiate from closely related sibling tools, leaving minor gaps in contextual completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a full description of the 'symbol' parameter with an example ('700.HK'), and the description does not add any additional parameter semantics. With 100% schema coverage, the description adds no extra value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('company executive and board member information'), clearly indicating the tool's function. However, it does not distinguish this from sibling tools like 'participants' or 'shareholder', which might also provide related corporate information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool or which alternatives might be more appropriate. It simply states what it retrieves without any context or exclusions, leaving the agent to infer the tool's applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filingsFilingsARead-onlyIdempotentInspect
Get regulatory filings (8-K, 10-Q, 10-K, etc.). Returns items[]{id, title, type, language, filing_date, url} for the symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying the exact return fields (id, title, type, language, filing_date, url), but does not cover pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Front-loaded with the core purpose and immediately followed by return format. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and return format, but lacks details on ordering, date range, or result limits. Given no output schema, more context (e.g., 'Returns up to 20 most recent filings') would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'symbol' parameter. The description provides an example ('700.HK'), adding clarity beyond the schema. Baseline is 3, with the example earning an extra point.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves regulatory filings (8-K, 10-Q, 10-K) for a stock symbol and lists the returned fields. It distinguishes itself from sibling tools like 'news' or 'news_search' by specifying regulatory filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when/when-not guidance is given, the purpose is self-evident from the name and description. The tool is clearly for regulatory filings, distinguishing it from news or other data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finance_calendarFinancial CalendarARead-onlyIdempotentInspect
Finance calendar by category: report (earnings) / dividend / split / ipo / macrodata (CPI, NFP, rates) / closed (holidays). start and end (YYYY-MM-DD) are optional, default today plus 7 days; keep ranges under 2 weeks or results truncate.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date in YYYY-MM-DD format (inclusive). Defaults to 7 days after `start`. | |
| start | No | Start date in YYYY-MM-DD format (inclusive). Defaults to today (UTC). | |
| market | No | Optional market filter. One of: HK, US, CN, SG, JP, UK, DE, AU. Omit to include all markets. | |
| category | Yes | Event category. One of: - "report": earnings reports (includes financial statements) - "dividend": dividend announcements - "split": stock splits and reverse splits (share consolidations) - "ipo": upcoming IPO listings - "macrodata": macro economic data releases (CPI, NFP, rate decisions, etc.) - "closed": market closure days |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| partial | No | |
| partial_reason | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld, and non-destructive behavior. The description adds meaningful behavioral context beyond annotations: start/end default to today plus 7 days, and ranges over 2 weeks cause results to truncate. It also clarifies category scope (e.g., macrodata includes CPI, NFP, rates). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first front-loads the category list, the second conveys default dates and the range limit. Every phrase earns its place, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists and annotations cover the safety profile. The description gives everything needed to call the tool correctly: required category, optional start/end with defaults and range limit. The only gap, guidance on when to use this over sibling tools, was already penalized under usage_guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description enriches the start/end parameters by stating defaults and the truncation policy, which the schema does not include. Category examples in the description mirror the schema but add useful concrete instances (CPI, NFP, rates).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (finance calendar) and enumerates specific event categories with examples (report, dividend, split, ipo, macrodata, closed). It is not verb-driven like 'List...' but clearly conveys that this is a calendar of financial events by category. It distinguishes from dedicated siblings by spanning multiple categories, though it doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use finance_calendar versus dedicated sibling tools such as ipo_calendar, macrodata, dividend, trading_days, or corp_action. The only usage notes are about default date ranges and truncation, which relate to parameters, not tool selection. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_reportFinancial ReportBRead-onlyIdempotentInspect
Get financial reports (income statement, balance sheet, cash flow). kind: IS/BS/CF/ALL. report_type: af (annual), saf (semi-annual), q1/q2/q3, qf (quarterly full).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Statement kind: "IS" (income statement), "BS" (balance sheet), "CF" (cash flow), "ALL" (default) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" | |
| report_type | No | Report period: "af" (annual), "saf" (semi-annual), "q1"/"q2"/"q3" (quarterly), "qf" (quarterly full) |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| report | No | |
| bs_list | No | |
| cf_list | No | |
| is_list | No | |
| currency | No | |
| ccy_symbol | No | |
| report_type | No | |
| empty_fields | No |
TDQS
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 safety profile is clear. The description adds little beyond the parameter values; it does not disclose additional behavior like data volume, output structure, or potential errors. For a read-only tool with rich annotations, this is marginally acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that lists the main action and enumerates parameter values. No redundant words, and it is front-loaded with the core purpose. Every piece earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and rich annotations, the description adequately covers the necessary information: what reports are retrieved and the parameter options. It could be improved by mentioning that it returns full financial statements for the specified period, but it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description repeats the parameter values (kind, report_type) but adds no new meaning beyond the schema. Baseline score of 3 is appropriate since the schema already carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves financial reports and lists specific kinds (IS, BS, CF, ALL) and report types. This gives a clear verb+resource pairing. However, it does not explicitly differentiate this tool from siblings like financial_report_snapshot or financial_report_key_metrics, which reduces clarity for distinguishing usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Given the presence of sibling tools focusing on key metrics, snapshots, or latest reports, the agent receives no context to decide which to invoke. No 'when not to use' or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_report_key_metricsFinancial Report Key Metrics (US)ARead-onlyIdempotentInspect
Get key financial metrics (fin-keyfactor) for a US symbol. report: af (annual, default), saf, qf, q1/q2/q3. US accounts only; errors with DcRegionRestricted for HK/CN/SG accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| report | No | Report period: "af" (annual, default), "saf" (semi-annual), "qf" (quarterly full), "q1"/"q2"/"q3". | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| report | No | |
| currency | No | |
| empty_fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, non-destructive. Description adds US-specific constraint and error behavior (DcRegionRestricted for HK/CN/SG accounts), providing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each serving a clear purpose: first explains what and for whom, second adds usage constraints. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with output schema, description explains core function, report options, and geographic restriction. Complete given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions. Description adds default report value ('af') and reinforces US-only constraint on symbol. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves key financial metrics for a US symbol, specifying the resource (fin-keyfactor) and action (get). It mentions report types and US-only restriction, distinguishing it from siblings like financial_report_latest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use: for US accounts, with report period options. Notes error condition for restricted accounts. Does not explicitly exclude alternatives but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_report_latestLatest Financial ReportBRead-onlyIdempotentInspect
Get the latest financial report summary for a security.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| eps | No | |
| roe | No | |
| period | No | |
| revenue | No | |
| net_income | No | |
| report_date | No | |
| gross_margin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, which inform the agent about safety and behavior. The description adds minimal context beyond 'summary' and 'latest', but does not contradict annotations. No additional behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It is front-loaded and efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required parameter, output schema exists), the description is adequate but does not fully address usage context or distinguish from similar tools. An output schema covers return values, so completeness is acceptable but not outstanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description for 'symbol' already specifies it is a security symbol with example '700.HK'. The description adds no additional semantic meaning beyond what is in 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the latest financial report summary for a security', using a specific verb (Get) and resource (latest financial report summary). It distinguishes from siblings like 'financial_report' and 'financial_report_snapshot' via 'latest' and 'summary', though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'financial_report' or 'financial_report_snapshot'. The description lacks explicit when-to-use, when-not-to-use, or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_report_snapshotFinancial Report SnapshotCRead-onlyIdempotentInspect
Get financial report snapshot: report_desc (text summary), fo_revenue/fo_ebit/fo_eps (actual vs forecast with yoy/cmp), fr_* financial ratios (ROE, margins, assets, cash flow). report: qf/saf/af.
| Name | Required | Description | Default |
|---|---|---|---|
| report | No | Report type: "qf" (quarterly), "saf" (semi-annual), "af" (annual) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" | |
| fiscal_year | No | Fiscal year, e.g. 2024 | |
| fiscal_period | No | Fiscal period, e.g. "1" "2" "3" "4" |
Output Schema
| Name | Required | Description |
|---|---|---|
| fo_eps | No | |
| fo_ebit | No | |
| fo_revenue | No | |
| report_desc | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description does not add behavioral context beyond this, such as data freshness, rate limits, or potential side effects, which would add value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but uses abbreviations (fo_, fr_, yoy, cmp) that may be unclear. It front-loads the action but lacks structure. It is not overly verbose but could be better organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 100% parameter coverage, the description adequately conveys the tool's purpose. However, it omits any mention of prerequisites, error conditions, or usage constraints, which would be helpful for a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all parameters well. The description adds some context by explaining output field semantics (e.g., fo_revenue shows actual vs forecast), but does not improve understanding of the parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a financial report snapshot and lists specific fields (report_desc, fo_revenue, etc.) and report types (qf/saf/af). However, it does not differentiate from sibling tools like financial_report, financial_report_latest, or financial_statement, which likely overlap in functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or limitations. The agent receives no context about when not to use it or what distinguishes it from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_statementFinancial StatementsARead-onlyIdempotentInspect
Get financial statements (income statement, balance sheet, or cash flow) for a security. kind: IS/BS/CF/ALL. report: af (annual, default), saf (semi-annual), qf (quarterly full), q1/q2/q3.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Statement kind: "IS" (income statement), "BS" (balance sheet), "CF" (cash flow), "ALL" (default) | |
| report | No | Report period: "af" (annual), "saf" (semi-annual), "qf" (quarterly full), "q1"/"q2"/"q3" | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| report | No | |
| currency | No | |
| cash_flow | No | |
| empty_fields | No | |
| balance_sheet | No | |
| income_statement | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds no additional behavioral context (e.g., data freshness, pagination, rate limits). It is acceptable but does not go 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two lines, front-loaded with the main action, and every sentence is informative. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema (not shown) and annotations cover safety, the description provides enough context for typical use. It could mention that the output is a financial statement object, but the purpose is clear. Siblings exist but their distinction is implied through parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the shortcut abbreviations for kind (IS/BS/CF/ALL) and report periods (af, saf, qf, q1/q2/q3) in a compact manner, which is not fully present in schema descriptions. This helps agents understand allowed values quickly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get', the resource 'financial statements (income statement, balance sheet, or cash flow)', and scope 'for a security'. It lists statement types and report periods. However, it does not explicitly distinguish among siblings like financial_report, cash_flow, etc., though the specificity of kind and report parameters helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. No when/when-not or alternative tool mentions. The description assumes the agent knows when to pick this over other financial statement tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecast_epsForecast EPSBRead-onlyIdempotentInspect
Get EPS forecast and analyst estimate history.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool has strong annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint false) that disclose its safety and idempotency. The description adds no behavioral details beyond what annotations provide, such as data freshness or rate limits, but also does not contradict them. So 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one sentence front-loaded with the core action. It is efficient but could include a bit more context without becoming verbose. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), so the description does not need to explain return values. However, the description could provide more context about the data's temporal scope (e.g., current forecast vs. historical) or data source, which is missing. For a simple tool, it is barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for its single parameter 'symbol', already containing a description. The tool description does not add any extra semantic meaning or usage tips beyond what the schema provides, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and clearly states the resource 'EPS forecast and analyst estimate history', distinguishing it from sibling tools like 'consensus' which cover broader estimates. The purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to use 'consensus' for different analyst data. No prerequisites or exclusions are mentioned, 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.
fund_holderFund HoldersARead-onlyIdempotentInspect
Get funds and ETFs that hold a given symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| fund_holders | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, but the description adds no further behavioral details such as data freshness, pagination, or definition of 'holding'. With rich annotations, the description adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear verb-first structure. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature (1 param, rich annotations, output schema exists), the description is largely complete. Could mention that it returns a list of fund/ETF identifiers, but not necessary with output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (symbol) is fully described in the input schema with an example. The tool description adds no additional meaning, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves funds and ETFs holding a given symbol. The verb 'Get' and specific resource 'funds and ETFs that hold a given symbol' make the purpose unambiguous and distinct from sibling tools like 'fund_positions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding holders of a symbol but does not explicitly state when to use this tool vs alternatives like 'fund_positions' or provide context about limitations or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_positionsFund PositionsARead-onlyIdempotentInspect
Get current fund positions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| list | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and behavior. The description adds no extra context beyond the name, but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence with no wasted words. It is appropriately sized for a simple read-only tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and comprehensive annotations, the description is minimally complete. It could be enriched with more detail about what fund positions include, but is sufficient for a straightforward retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params, 100% schema coverage). The description does not need to explain parameters. Baseline for zero params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves current fund positions. It uses a specific verb ('Get') and resource ('current fund positions'), distinguishing it from sibling tools that handle different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description does not mention exclusions, prerequisites, or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_cancelCancel Grid OrderADestructiveIdempotentInspect
Cancel (terminate) a grid order by order_id. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed it. The code is derived from the order itself, so it applies only to that exact request. Never quote it back on your own initiative.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed it. The code is single use, expires in 10 minutes, and applies only to this exact request — change any field and it stops working. A grid strategy keeps placing orders on its own once live, so never quote the code back on your own initiative. | |
| order_id | Yes | Grid order ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that the tool is a dry run unless a confirmation code is passed, that the code is derived from the exact request and is single-use, and that the agent must never confirm on its own initiative. This is critical behavioral context for a destructive action, and it does not contradict the destructiveHint or idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the verb/resource is front-loaded, the mandatory confirmation protocol is stated early, and the single-use nature and prohibition on autonomous confirmation are packed into four tight sentences with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, safety-critical tool, the description covers the entire correct invocation sequence: dry run, preview to user, explicit confirmation, and the exact confirmation code semantics. The schema fills in the remaining details (expiry, single-use, change invalidation), and no output schema is needed to make the flow actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both order_id and execute. The description reinforces the two-step confirmation flow but adds no parameter meaning beyond what the schema's execute description already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Cancel (terminate)') and resource ('a grid order by order_id'), making the tool's purpose immediately clear. It distinguishes grid_cancel from the sibling cancel_order by specifying the grid-order domain, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit mandatory protocol: call without execute, show the preview, and call again only after user confirmation. It does not, however, contrast this tool with alternatives such as cancel_order or grid_replace, so it lacks explicit 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.
grid_detailGrid Order DetailARead-onlyInspect
Full detail for one grid order: rule parameters, status, embedded child orders (grid_sub_orders) and lifecycle history (grid_order_history). Supports history_id cursor + limit paging.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size for the embedded sub-order / history lists. | |
| order_id | Yes | Grid order ID. | |
| history_id | No | History cursor for paging the embedded trigger history. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| symbol | No | |
| order_id | No | |
| expire_time | No | |
| grid_status | No | |
| suspend_reason | No | |
| grid_sub_orders | No | |
| lower_limit_price | No | |
| upper_limit_price | No | |
| grid_order_history | No | |
| settlement_currency | No | |
| submitted_base_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description goes beyond those by specifying what is returned—rule parameters, status, embedded grid_sub_orders, and grid_order_history—and by documenting cursor-based pagination behavior via history_id and limit. This adds useful behavioral context without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and every clause contributes meaning. It front-loads the core purpose, then lists the included detail types and pagination behavior without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to explain return value shapes. It covers the tool's scope, included embedded entities, and pagination mechanism. This is sufficiently complete for a read-only detail-retrieval tool with only three inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description's mention of 'history_id cursor + limit paging' reinforces the schema's existing parameter descriptions but does not add new semantic details beyond what the schema already provides. No extra parameter meaning is introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource combination: 'Full detail for one grid order,' immediately clarifying this is a single-order retrieval tool. It enumerates distinct contents (rule parameters, status, embedded child orders, lifecycle history), which clearly distinguishes it from siblings like grid_list or grid_trigger_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Full detail for one grid order' clearly signals when this tool is appropriate: when a single order's complete details are needed rather than a list or summary. It does not explicitly name alternatives or state when not to use it, but the contrast with list-oriented sibling tools is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_listList Grid OrdersARead-onlyInspect
List grid trading orders. Filter by symbol or comma-joined status (e.g. "Performing,Suspended"); supports page/limit and sort_by/sort_order.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1). | |
| limit | No | Records per page (default 20). | |
| status | No | Comma-joined status filter, e.g. "Performing,Suspended". Omit for all. | |
| symbol | No | Filter by symbol, e.g. "700.HK". Omit for all grid orders. | |
| sort_by | No | Sort field (e.g. "created_at"). | |
| sort_order | No | Sort order ("asc" / "desc"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | Yes | |
| grid_order | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only behavior is consistent with annotations; description adds filter details without introducing side effects or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence covering purpose and key filtering/pagination features without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a list operation; output schema exists so return values need not be described. Could mention pagination behavior, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already includes full parameter descriptions with examples; the description repeats these without adding new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists grid trading orders, distinguishing it from detail or submission tools like grid_detail and grid_submit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for retrieving lists with filters, but does not explicitly contrast with alternatives; adequate for a straightforward listing operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_list_by_idsGet Grid Orders By IDsARead-onlyInspect
Fetch specific grid orders by their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| order_ids | Yes | Grid order IDs to fetch, e.g. ["123", "456"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| grid_orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint: true and openWorldHint: true, so the description is not responsible for communicating read-only semantics. The description adds minimal additional behavioral context, but the annotations fully cover the safety profile. A slight mention of no side effects could be added but is redundant here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, punchy sentence with zero fluff. It is perfectly sized for a simple fetch operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only fetch tool with one parameter, clear schema, and annotations, this description is fully adequate. The context signals (no nested objects, no enums, simple array parameter) simplify the need for elaboration. An output schema exists, so not detailing return values is not a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a helpful example ('e.g. ["123", "456"]') in the schema itself. The description's focus on 'their IDs' reinforces the purpose of the sole parameter. Since the schema does all the heavy lifting, the description adds adequate value, meeting the baseline for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch specific grid orders by their IDs' uses a specific verb ('Fetch') and names the resource ('grid orders') plus the scoping mechanism ('by their IDs'). This aligns perfectly with the tool name and clearly belongs to the grid order family of tools, distinguishing it from related siblings like 'grid_list' (which likely fetches all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching specific grid orders, and the tool's place in the grid family is clear from its name and siblings. However, it does not explicitly state when NOT to use it (e.g., for listing all orders) or name a specific alternative tool, missing an opportunity to fully distinguish from siblings like 'grid_list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_questionnaireGrid Strategy ConsentAIdempotentInspect
Record the one-time grid strategy risk-disclosure consent required before submitting grid orders. Takes no parameters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, idempotent, non-destructive operation. The description adds the business context of a one-time prerequisite, but doesn't disclose additional side effects, response details, or failure modes. It neither contradicts nor significantly extends the annotations, making a 3 appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no redundancy. It front-loads the primary action ('Record...') and adds the prerequisite context in the same sentence, followed by a clear parameter note. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema), the description covers the core purpose and the usage prerequisite. It doesn't mention return values or error handling, but the annotation set (especially idempotentHint) covers behavioral expectations. A small gap is the lack of what occurs if consent already exists, but the idempotent hint mitigates this. Complete enough for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description explicitly states 'Takes no parameters,' which is consistent with the empty schema. The baseline for zero-parameter tools is 4, and the description confirms this without adding unnecessary noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Record' with the resource 'one-time grid strategy risk-disclosure consent' and explicitly states the prerequisite context ('required before submitting grid orders'). This clearly distinguishes it from sibling tools like grid_submit, grid_cancel, and grid_replace, which handle order actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when to use the tool: 'required before submitting grid orders', which implies using it prior to grid_submit. It also notes the 'one-time' nature, giving a clear usage boundary. However, it doesn't explicitly exclude scenarios like when consent already exists, nor does it name alternatives, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_replaceReplace Grid OrderADestructiveIdempotentInspect
Replace an existing grid order's rule by order_id. Accepts the same grid rule fields as grid_submit. Overwrites the order's entire rule. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed it. The code is derived from the order itself, so it applies only to that exact request. Never quote it back on your own initiative. The dry run echoes the rule that would replace the current one.
| Name | Required | Description | Default |
|---|---|---|---|
| rth | No | Regular-trading-hours flag: 0 / 1 / 2. | |
| execute | No | The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed it. The code is single use, expires in 10 minutes, and applies only to this exact request — change any field and it stops working. A grid strategy keeps placing orders on its own once live, so never quote the code back on your own initiative. | |
| order_id | Yes | Grid order ID to replace. | |
| expire_time | No | Expiry time in unix seconds (use with GTD). | |
| time_in_force | No | Time in force: 0 = Day, 1 = GTC, 6 = GTD. | |
| multiple_trigger | No | Whether one grid level may trigger multiple times. | |
| trigger_quantity | No | Quantity per trigger (decimal string). | |
| lower_limit_event | No | Action at lower bound: 1 = ignore (keep running), 2 = close at last price. | |
| lower_limit_price | No | Lower price bound (decimal string). | |
| support_shortsell | No | Whether short selling is allowed. | |
| trigger_buy_depth | No | Buy-side order-book depth (-5..5; 0 = use grid_order_type_down). | |
| trigger_spread_up | No | Upward trigger spread, absolute (decimal string; use with type 1). | |
| upper_limit_event | No | Action at upper bound: 1 = ignore (keep running), 2 = close at last price. | |
| upper_limit_price | No | Upper price bound (decimal string). | |
| grid_order_type_up | No | Sell-side order type when depth is 0: GMO / GLO / GTG. | |
| trigger_percent_up | No | Upward trigger percent (decimal string; use with type 2). | |
| trigger_price_type | No | Trigger price type: 1 = spread (absolute), 2 = percent. | |
| trigger_sell_depth | No | Sell-side order-book depth (-5..5; 0 = use grid_order_type_up). | |
| trigger_spread_down | No | Downward trigger spread, absolute (decimal string; use with type 1). | |
| grid_order_type_down | No | Buy-side order type when depth is 0: GMO / GLO / GTG. | |
| lower_limit_quantity | No | Quantity handled when the lower bound is reached (decimal string). | |
| submitted_base_price | No | Base price the grid is anchored to (decimal string). | |
| trigger_percent_down | No | Downward trigger percent (decimal string; use with type 2). | |
| upper_limit_quantity | No | Quantity handled when the upper bound is reached (decimal string). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the dry-run-first behavior, the confirmation_code requirement, the code's single-use and request-scoped nature, and the requirement to wait for explicit user confirmation. It also warns 'Never quote it back on your own initiative,' and its 'Overwrites the order's entire rule' statement aligns with the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the action and overwrite semantics first, then the safety protocol. Every sentence carries distinct information, and referencing grid_submit avoids repeating the full field list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature and 24 parameters, the description covers the critical behavioral context: dry-run, confirmation_code, user confirmation, and preview echo. However, with no output schema, it does not describe what the final execute call returns on success or failure, and it does not specify which combination of grid rule fields constitutes a valid replacement beyond deferring to grid_submit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 24 parameters. The description adds a useful cross-reference to grid_submit and clarifies that these fields collectively form the entire replacement rule, but it does not add per-parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action: 'Replace an existing grid order's rule by order_id.' It further clarifies the scope by saying it 'Overwrites the order's entire rule' and references grid_submit for the field set, which distinguishes it from grid management siblings like grid_submit, grid_cancel, and grid_restart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for an existing grid order identified by order_id, and it provides a mandatory dry-run-and-confirm protocol. It cites grid_submit as the source of rule fields, which helps an agent reuse that knowledge, though it does not explicitly state when to prefer grid_submit for new orders or grid_cancel for cancellation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_restartRestart Grid OrderAIdempotentInspect
Restart (resume) a suspended grid order by order_id. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed it. The code is derived from the order itself, so it applies only to that exact request. Never quote it back on your own initiative. A restarted grid resumes placing orders on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed it. The code is single use, expires in 10 minutes, and applies only to this exact request — change any field and it stops working. A grid strategy keeps placing orders on its own once live, so never quote the code back on your own initiative. | |
| order_id | Yes | Grid order ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Going beyond the annotations, the description explains that without execute the call is only a DRY RUN and nothing is sent to the exchange, that the confirmation code is single-use and expires in 10 minutes, and that a live restarted grid resumes placing orders autonomously. This is highly relevant behavioral context, especially with readOnlyHint=false and openWorldHint=true, and it does not contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and the mandatory two-step confirmation, and every subsequent sentence adds a safety-relevant detail. Despite the complexity of the protocol, it remains tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers the full invocation lifecycle: dry-run, preview to user, explicit confirmation, execute code scope/expiry, and autonomous order placement afterward. An agent has enough to avoid misuse; the only minor gap is not describing the preview payload shape, which is not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters completely (order_id and execute, including the full dry-run/confirmation protocol). The main description restates the confirmation semantics but does not add meaning about parameter types or formats beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence specifies the action ('Restart (resume)'), the target ('a suspended grid order'), and the identifier ('order_id'), so the agent knows exactly what the tool operates on. It is clear at a glance, but it does not differentiate this from the similarly named sibling grid_resume, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lays out an unambiguous confirmation protocol: invoke without execute first, present the returned preview to the user, and only call again with execute=confirmation_code after explicit user confirmation. It also warns never to quote the code on the agent's own initiative. It does not compare with grid_resume or other grid tools, so four rather than five.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_submitSubmit Grid OrderAInspect
Submit a grid trading order. DRY RUN unless execute is the confirmation_code from its own dry run: call once without execute, show the preview, then re-call quoting the code only after the user confirms.
| Name | Required | Description | Default |
|---|---|---|---|
| rth | No | Regular-trading-hours flag: 0 / 1 / 2. | |
| symbol | Yes | Security symbol, e.g. "700.HK". | |
| execute | No | The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed it. The code is single use, expires in 10 minutes, and applies only to this exact request — change any field and it stops working. A grid strategy keeps placing orders on its own once live, so never quote the code back on your own initiative. | |
| expire_time | No | Expiry time in unix seconds (use with GTD). | |
| time_in_force | No | Time in force: 0 = Day, 1 = GTC, 6 = GTD. | |
| multiple_trigger | No | Whether one grid level may trigger multiple times. | |
| trigger_quantity | No | Quantity per trigger (decimal string). | |
| lower_limit_event | No | Action at lower bound: 1 = ignore (keep running), 2 = close at last price. | |
| lower_limit_price | No | Lower price bound (decimal string). | |
| support_shortsell | No | Whether short selling is allowed. | |
| trigger_buy_depth | No | Buy-side order-book depth (-5..5; 0 = use grid_order_type_down). | |
| trigger_spread_up | No | Upward trigger spread, absolute (decimal string; use with type 1). | |
| upper_limit_event | No | Action at upper bound: 1 = ignore (keep running), 2 = close at last price. | |
| upper_limit_price | No | Upper price bound (decimal string). | |
| grid_order_type_up | No | Sell-side order type when depth is 0: GMO / GLO / GTG. | |
| trigger_percent_up | No | Upward trigger percent (decimal string; use with type 2). | |
| trigger_price_type | No | Trigger price type: 1 = spread (absolute), 2 = percent. | |
| trigger_sell_depth | No | Sell-side order-book depth (-5..5; 0 = use grid_order_type_up). | |
| settlement_currency | Yes | Settlement currency, e.g. "HKD". | |
| trigger_spread_down | No | Downward trigger spread, absolute (decimal string; use with type 1). | |
| grid_order_type_down | No | Buy-side order type when depth is 0: GMO / GLO / GTG. | |
| lower_limit_quantity | No | Quantity handled when the lower bound is reached (decimal string). | |
| submitted_base_price | No | Base price the grid is anchored to (decimal string). | |
| trigger_percent_down | No | Downward trigger percent (decimal string; use with type 2). | |
| upper_limit_quantity | No | Quantity handled when the upper bound is reached (decimal string). |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| preview | No | |
| order_id | No | |
| next_step | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses dry-run vs live behavior, single-use 10-minute confirmation codes tied to the exact request, and the autonomous order-placing nature of a live grid. This goes well beyond the annotations (readOnlyHint false, idempotentHint false) and is critical risk context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, purposeful sentences: one for what the tool does, one for the mandatory two-call workflow. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the one non-obvious, high-risk aspect of using this tool: never executing without a user-confirmed confirmation code. With 100% schema coverage, an output schema, and annotations, nothing needed to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the execute parameter description already explains the confirmation-code protocol in detail. The top-level description reinforces that protocol but adds little parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource ('Submit a grid trading order'), and the tool name/title align. It doesn't explicitly contrast with sibling submit_order, but 'grid' narrows the target from the surrounding order/grid tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a precise usage protocol: dry-run first, show the preview, re-call with the confirmation code only after user confirmation, and never auto-quote. It does not name alternatives or say when grid_submit should be preferred over submit_order, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_suspendSuspend Grid OrderAIdempotentInspect
Suspend (pause) a running grid order by order_id. Resume with grid_restart. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed it. The code is derived from the order itself, so it applies only to that exact request. Never quote it back on your own initiative.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed it. The code is single use, expires in 10 minutes, and applies only to this exact request — change any field and it stops working. A grid strategy keeps placing orders on its own once live, so never quote the code back on your own initiative. | |
| order_id | Yes | Grid order ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only flags (readOnlyHint=false, idempotentHint=true, destructiveHint=false), but the description reveals the critical behavioral trait the annotations cannot: this tool is a dry run unless given a confirmation_code, which is single-use, expires in 10 minutes, and binds to the exact request. It also discloses the real-world risk ('A grid strategy keeps placing orders on its own once live'). This is exactly the kind of context that goes beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded: the purpose verb-object lands in sentence one, the sibling routing in sentence two, and the safety protocol follows in a clearly flagged section. Every sentence earns its place — even the warning about grid strategies is essential for safe use. Slightly longer than average, but the density of mandatory procedural information justifies it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with a mandatory confirmation protocol and no output schema, the description is complete: it covers the operation, the resume counterpart, the exact two-step call sequence, the confirmation_code constraints (single-use, expiry, request binding), and the guardrail against self-initiated quoting. Nothing an agent needs to invoke and confirm this safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 100%, the description adds deep meaning beyond the schema for the execute parameter: it explains the confirmation_code's derivation from the order, single-use behavior, 10-minute expiry, and change-any-field-invalidation. The order_id param is clarified as belonging to a *running* grid order. This substantially exceeds what the bare schema strings provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb-resource pair: 'Suspend (pause) a running grid order by order_id.' It names the distinguishing scope (a *running* grid order) and explicitly differentiates from the resume sibling in the very next sentence ('Resume with grid_restart'). An agent can tell it apart from grid_cancel and grid_restart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool (grid_restart) and gives explicit when-to-use guidance plus a mandatory call sequence: 'Call it first without execute, show the returned preview to the user, and only call it again with execute="<confirmation_code>" after the user has explicitly confirmed it.' It even states a hard when-not ('Never quote it back on your own initiative'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_symbol_infoGrid Symbol InfoARead-onlyInspect
Pre-trade grid setup info for a security (takes a symbol, not an order_id): security name, last price, board lot sizes (buy/sell), price-step (bid_size) table, and channel/authorization info (strategy grant flag, RTH support, supported s...
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK". |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| lot_size | No | |
| bid_sizes | No | |
| last_done | No | |
| buy_lot_size | No | |
| channel_info | No | |
| sell_lot_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only and open-world hints already signal this is a safe lookup. The description adds helpful behavioral context by detailing what the response includes, such as price-step tables and authorization/channel info, while clarifying that the lookup is symbol-based rather than order-based. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one dense, front-loaded sentence that communicates purpose, inputs, and output content efficiently. However, it appears truncated mid-sentence ('supported s...'), which slightly reduces polish and completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, full schema coverage, and read-only annotations, the description is mostly sufficient. It conveys the expected output and usage context well; only the truncated ending prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single required parameter with a concrete example ('700.HK'), so baseline coverage is high. The description's added clarification that the tool takes 'a symbol, not an order_id' adds real semantic value by preventing confusion with order-based endpoints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool provides 'pre-trade grid setup info for a security' and enumerates distinct outputs: security name, last price, board lot sizes, price-step table, and channel/authorization info. The phrase 'takes a symbol, not an order_id' also helps distinguish this tool from order-based grid tools like grid_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'pre-trade grid setup info' establishes a clear usage context: use this when setting up a grid trade for a security before submitting an order. The explicit note that it takes a symbol rather than an order_id provides useful direction away from order-specific tools, though it does not name sibling alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grid_trigger_historyGrid Trigger HistoryARead-onlyInspect
Trigger history for one grid order: each triggered child order with price, quantity, executed price/qty, and trigger time. Supports page/limit.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1). | |
| limit | No | Records per page (default 20). | |
| order_id | Yes | Grid order ID whose trigger history to fetch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | Yes | |
| trigger_orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given the annotations already declare readOnlyHint and openWorldHint, the description adds useful behavioral context by listing response contents (price, quantity, executed price/qty, trigger time) and pagination support. This goes beyond the annotations without contradicting them. No destructive or mutation behavior is implied, matching the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and immediately states the purpose. It is front-loaded, specific, and contains no filler. Each clause conveys useful information: the resource, response fields, and pagination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the presence of an output schema, read-only annotations, and only three simple parameters, the description provides adequate context for agent invocation. It clearly identifies the one required parameter context and the nature of the returned data. Additional nuance about alternative tools or default behaviors is available via the existing schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so order_id, page, and limit are already documented with defaults and purpose. The description reinforces that order_id is the grid order to fetch and that page/limit are supported, but it does not add new parameter-level detail beyond the schema. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as 'trigger history for one grid order' and specifies that it contains child order details like price, quantity, executed price/qty, and trigger time. This scope clearly distinguishes it from list-level grid tools such as grid_list or grid_detail. It lacks an explicit verb but the intended action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when needing the triggered child orders for a specific grid order. It also mentions pagination via page/limit. However, it does not explicitly state alternatives or when not to use it, relying instead on the general context among grid-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_candlesticks_by_dateHistorical Candlesticks by DateBRead-onlyIdempotentInspect
Get historical candlestick data by date range. Only symbol is required; period defaults to day (1m/5m/15m/30m/60m/day/week/month/year), forward_adjust to false, trade_sessions to all.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (yyyy-mm-dd), optional | |
| start | No | Start date (yyyy-mm-dd), optional | |
| period | No | Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day) | day |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| forward_adjust | No | Whether to forward-adjust for splits/dividends (default: false / no adjust) | |
| trade_sessions | No | Trade sessions: "intraday" (regular hours only) or "all" (include pre-market and post-market; default "all") | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds some context by noting that only symbol is required and by listing default values, but it does not disclose output format, date range limits, timezone behavior, or other runtime traits. Overall it adds modest value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the main purpose and then packs the essential defaults efficiently. Every part contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with six documented parameters, the description covers the basic call requirements. However, it does not clarify how this tool differs from sibling candlestick/history tools, and with no output schema it leaves the return shape implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description restates defaults for period, forward_adjust, and trade_sessions but does not add meaningful detail beyond the schema, such as value constraints, date formats, or edge-case behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Get historical candlestick data by date range') and identifies the key resource and inputs. It is distinguishable from the likely sibling 'history_candlesticks_by_offset' via the 'by date range' phrasing, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful defaults but gives no guidance on when to choose this tool over alternatives such as history_candlesticks_by_offset or candlesticks. No exclusions or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_candlesticks_by_offsetHistorical Candlesticks by OffsetARead-onlyIdempotentInspect
Get historical candlestick data by offset from a reference time. Only symbol is required; period defaults to day (1m/5m/15m/30m/60m/day/week/month/year), count to 100, forward_adjust/forward to false, trade_sessions to all.
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Reference datetime (yyyy-mm-ddTHH:MM:SS), omit to start from latest | |
| count | No | Number of candlesticks (optional, max 1000; default 100) | |
| period | No | Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day) | day |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| forward | No | Whether to query forward in time (true) or backward (false; default) | |
| forward_adjust | No | Whether to forward-adjust for splits/dividends (default: false / no adjust) | |
| trade_sessions | No | Trade sessions: "intraday" (regular hours only) or "all" (include pre-market and post-market; default "all") | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior, and the description adds the default temporal direction: it queries by offset from a reference time, defaulting to backward (forward false) and no forward adjustment. It also clarifies default trade sessions. This is useful behavioral context beyond the annotations, with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that begins with the core operation and immediately follows with the most important call facts (required field and defaults). There is no filler or repetition that a schema already covers comprehensively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, robust read-only/idempotent annotations, and a clear defaults summary, the union of description and schema is sufficient for correct invocation. The main remaining gap is explicit routing guidance against sibling tools like history_candlesticks_by_date, which is more of a usage-guidelines than completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter has a meaningful schema description. The tool description mostly restates defaults ('period defaults to day', 'count to 100', 'forward_adjust/forward to false', 'trade_sessions to all') rather than adding new meanings. A baseline 3 is appropriate because the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Get historical candlestick data') and a defining mechanism ('by offset from a reference time'), which distinguishes it from the sibling history_candlesticks_by_date and other candle tools. The phrase 'historical' also separates it from real-time quote/intraday tools. It is specific enough for an agent to know what this tool does at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives operational requirements ('Only symbol is required') and defaults, but does not state when to prefer this tool over alternatives such as history_candlesticks_by_date, candlesticks, or intraday. There is no exclusion or routing guidance despite a rich sibling list. The usage context must be inferred from the phrase 'by offset'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_executionsHistorical ExecutionsARead-onlyIdempotentInspect
Get historical trade executions between dates. Returns executions[]{order_id, symbol, side, quantity, price, trade_done_at}. start_at/end_at in RFC3339.
| Name | Required | Description | Default |
|---|---|---|---|
| end_at | Yes | End time (RFC3339) | |
| symbol | No | Filter by symbol (optional) | |
| us_page | No | US accounts only, history_orders tool only: page number (default 1). | |
| start_at | Yes | Start time (RFC3339) | |
| us_limit | No | US accounts only, history_orders tool only: page size (default 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm read-only and idempotent behavior; description adds return field details. However, schema includes parameters (us_page, us_limit) labeled for another tool without clarification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load purpose and then detail return format and required parameters. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lists return fields but no output schema. Does not address optional parameters or differentiate from sibling 'history_orders' which might be confused with this executions tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters but contain misleading text for us_page/us_limit. Description adds meaning for required params (RFC3339) but not for optional ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get historical trade executions between dates' and lists return fields. Distinguishes from 'today_executions' sibling by specifying date range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the function for historical date ranges but does not explicitly exclude or compare to alternatives like 'history_orders' or 'today_executions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_market_temperatureHistorical Market TemperatureCRead-onlyIdempotentInspect
Get historical market temperature time series.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (yyyy-mm-dd) | |
| start | Yes | Start date (yyyy-mm-dd) | |
| market | Yes | Market code: HK, US, CN, SG |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | Yes | |
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations (readOnlyHint, idempotentHint, etc.). It does not mention potential side effects, rate limits, or output format, so transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that immediately states the action and subject. It is concise, front-loaded, and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is extremely minimal and does not explain what the market temperature time series represents, what units are used, or what the expected output looks like. With no output schema, this lack of context leaves the user with insufficient information to fully understand the tool's results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description does not add any meaning to the parameters beyond the schema's own descriptions. Each parameter (start, end, market) already has a brief explanation in the schema, and the description offers no additional clarification or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'historical market temperature time series', which accurately conveys the tool's purpose. It distinguishes from sibling tools like history_candlesticks or market_status by naming the specific data type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description only states what it does, not when it should be chosen over other history or temperature-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_ordersHistorical OrdersARead-onlyIdempotentInspect
Get historical orders between dates (excludes today). Returns orders[]{order_id, symbol, side, status, quantity, price, submitted_at}. start_at/end_at in RFC3339. US accounts only: us_page, us_limit paginate via a separate US order endpoint (default page size 20 — pass us_page to see more than the first page).
| Name | Required | Description | Default |
|---|---|---|---|
| end_at | Yes | End time (RFC3339) | |
| symbol | No | Filter by symbol (optional) | |
| us_page | No | US accounts only, history_orders tool only: page number (default 1). | |
| start_at | Yes | Start time (RFC3339) | |
| us_limit | No | US accounts only, history_orders tool only: page size (default 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds important behavioral details beyond annotations: excludes today, lists exact return fields, and describes pagination via a separate endpoint. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no waste. Purpose, return shape, and pagination details each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 params and no output schema, the description fully covers return fields, required parameters, and US-specific pagination. No gaps given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds significant meaning: explains RFC3339 format, clarifies us_page/us_limit pagination behavior (separate endpoint, default size), and states US-only restriction not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets historical orders between dates, excludes today, and lists return fields. It implicitly distinguishes from 'today_orders' and other order-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies US accounts only and explains pagination behavior. Provides clear context for when to use (historical period) but does not explicitly compare to sibling tools like 'today_orders'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_peersIndustry PeersARead-onlyIdempotentInspect
Hierarchical sub-sector tree for an industry group. Accepts BK counter_id from industry_rank (e.g. BK/US/IN00258). Each node shows stock count, daily change, and YTD change.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | BK counter_id from `industry_rank`, e.g. "BK/US/IN00258". |
Output Schema
| Name | Required | Description |
|---|---|---|
| top | No | |
| chain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and idempotentHint annotations, the description discloses the tree structure and data shown per node (stock count, daily change, YTD change), adding useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff; front-loaded with purpose immediately, followed by input and output details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool, output schema exists, and annotations provide safety profile, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the symbol parameter, but the description adds the origin (from industry_rank) and an example format, enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides a hierarchical sub-sector tree for an industry group. Specific verb+resource, but does not explicitly distinguish from sibling tools like industry_rank or industry_valuation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates the input comes from industry_rank, implying a prerequisite, but does not provide explicit when-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_rankIndustry RankARead-onlyIdempotentInspect
Industry ranking list by market (US/HK/CN/SG) and indicator (0=领涨/1=今日走势/2=人气/3=市值/4=营收/5=营收增长率/6=净利润/7=净利润增长率). sort_type: 0=单级 1=多层. Returns items[]{counter_id(BK/US/IN00258), name, chg, lists[]}. Pass counter_id directly to industry_peers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (default: returns all) | |
| market | Yes | Market: "US" | "HK" | "SG" | "CN" | |
| indicator | No | Ranking indicator (default: "0"): "0" = 领涨行业, "1" = 今日走势, "2" = 行业人气, "3" = 市值, "4" = 营收, "5" = 营收增长率, "6" = 净利润, "7" = 净利润增长率 | |
| sort_type | No | Sort type: "0" = 单级 (default) | "1" = 多层 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description adds return structure details (items array with counter_id, name, chg, lists[]). It does not disclose any additional behavioral traits such as ordering, pagination, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (a few sentences) and front-loaded with the core purpose. However, it uses untranslated Chinese terms (e.g., 领涨, 单级) which may reduce clarity for non-Chinese-speaking agents. Still, it efficiently conveys key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The complexity is moderate with 4 string parameters and no output schema. The description includes the return items structure but omits explanations of the fields (e.g., 'chg', 'lists[]'). It also does not clarify '单级' vs '多层' sorting behavior. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing baseline 3. The description adds value by explaining indicator numeric codes as Chinese descriptive labels and clarifying sort_type values (单级/多层). It also specifies default behavior for limit ('returns all'), which goes beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an industry ranking list by market and indicator, with specific indicator values described. It also mentions related tool industry_peers, but does not clearly differentiate from other industry-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying market, indicator, and sort type, but provides no explicit guidance on when to use this tool vs. alternatives like industry_peers or industry_valuation. The mention of passing counter_id to industry_peers hints at a follow-up, but no when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_valuationIndustry ValuationARead-onlyIdempotentInspect
Get industry valuation comparison for peers.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds no further behavioral context, but the bar is lower due to annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key action and object, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema likely details the return values, the description does not explain what 'valuation comparison' entails (e.g., metrics like P/E, P/B). It is adequate but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The description does not add any additional 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource 'industry valuation comparison for peers', clearly distinguishing it from sibling tools like 'valuation' or 'industry_rank'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'valuation_comparison' or 'industry_valuation_dist', leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_valuation_distIndustry Valuation DistributionBRead-onlyIdempotentInspect
Get industry PE/PB/PS valuation distribution.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| distributions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as readOnly, idempotent, and non-destructive. The description adds that it returns a 'distribution' of PE/PB/PS values, which is behavioral context beyond annotations, but does not disclose the format (e.g., histogram, percentiles) or any time scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but may be overly terse. It states the core purpose without elaboration, which is acceptable but leaves room for ambiguity about the nature of the 'distribution'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description does not need to detail return values. However, the tool deals with valuation distributions and could benefit from additional context (e.g., whether it returns historical or current data, or how industries are defined). Given moderate complexity and good schema coverage, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'symbol' is fully described in the schema (100% coverage) with an example. The description adds no additional semantic meaning, so a baseline 3 is appropriate given the schema already handles it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'industry PE/PB/PS valuation distribution', specifying the exact valuation metrics. However, it does not differentiate from siblings like 'industry_valuation' (likely summary stats) or 'industry_rank', leaving the agent to infer the distinction from the term 'distribution'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'industry_valuation' or 'industry_peers'. There is no mention of prerequisites, limitations, or context-specific scenarios, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institutional_viewsInstitutional ViewsBRead-onlyIdempotentInspect
Get monthly institutional rating distribution timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| months | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and safe behavior. The description adds temporal granularity (monthly) and output type (distribution), but does not disclose data freshness, limits, or other behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence with no filler. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, an output schema exists, and annotations are present, the description is minimally adequate. However, it lacks differentiation from related sibling tools and could benefit from more context about what 'distribution' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, which already has a clear description. The tool description adds no additional meaning for the parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a 'monthly institutional rating distribution timeline', specifying the verb and resource. However, it does not differentiate from sibling tools like institution_rating_history, which also deals with ratings over time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as institution_rating or institution_rating_detail. The description lacks context about scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institution_ratingInstitution RatingBRead-onlyIdempotentInspect
Get institution rating summary.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| analyst | No | |
| warnings | No | |
| instratings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety and idempotency profile is well covered. The description's 'Get' aligns with those annotations but adds no additional behavioral context such as data freshness, rating sources, or summary composition. This is an acceptable baseline given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or repetition, and the verb is front-loaded. It is appropriately sized for a simple read-only tool, though it could carry more useful detail about the rating summary without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only tool with a full input schema, an output schema, and strong annotations, the description is nearly sufficient for direct invocation. However, the ambiguity around what 'institution rating summary' means and how it differs from the several sibling rating tools leaves a modest completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter symbol is already described in the schema with type and an example ('700.HK'). The description adds no parameter-level detail, but it does not need to compensate for missing schema information. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource: 'Get institution rating summary.' It is distinct enough from sibling tools like institution_rating_detail, institution_rating_history, and institution_rating_industry_rank through the word 'summary.' However, it does not specify what the summary contains, leaving some ambiguity about the exact rating scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention institution_rating_detail, institution_rating_history, institution_rating_industry_rank, institutional_views, or consensus, and gives no exclusion conditions. An agent must infer the appropriate choice solely from the tool name and terse description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institution_rating_detailInstitution Rating DetailARead-onlyIdempotentInspect
Get detailed historical institution ratings and target price history.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds that the tool returns historical data including target prices, which aligns with annotations. No contradictions; the added behavioral context is minimal but sufficient with the existing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's function without any redundant or extraneous information. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, output schema present, strong annotations), the description is sufficiently complete. It could optionally mention time range limitations or result size, but that is not essential due to the output schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter ('symbol') fully described. The description does not add any additional meaning beyond the schema, such as format constraints or examples. Baseline score of 3 is appropriate as the schema already carries the informational load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and clearly states the resource: 'detailed historical institution ratings and target price history'. This distinguishes it from sibling tools like 'institution_rating' (likely simpler) and 'institution_rating_history' (possibly less detailed), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as 'institution_rating' or 'institution_rating_history'. There are no exclusions, prerequisites, or contextual hints for an AI agent to decide between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institution_rating_historyInstitution Rating HistoryBRead-onlyIdempotentInspect
Get institution rating history.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| target_history | No | |
| evaluate_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, providing a strong safety profile. The description adds no further behavioral details (e.g., data range, ordering, pagination), but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. Every word is necessary and functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and comprehensive annotations, the description is adequate for a simple lookup tool. However, it does not explain what the history contains (e.g., time period, data fields), leaving some context unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the 'symbol' parameter. The tool description adds no additional semantic meaning beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'institution rating history', distinguishing it from sibling tools like 'institution_rating' (current) and 'institution_rating_detail' (detailed current). The purpose is direct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it mention any prerequisites or context. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institution_rating_industry_rankInstitution Rating Industry RankARead-onlyIdempotentInspect
Get peers ranked by institution analyst ratings in the same industry. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No | |
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, confirming it is a safe read operation. The description adds 'Paginated', which is a behavioral trait not covered by annotations. However, other aspects like error handling or rate limits are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that immediately convey the core functionality. Every word is necessary, and the structure is front-loaded without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, a full input schema, and an output schema, the description is mostly complete. It explains the tool's purpose and pagination, but could be slightly more explicit about the ranking order or what constitutes 'in the same industry'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all three parameters (page, size, symbol). The description does not add any additional meaning or constraints beyond what the schema provides, aligning with the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'peers ranked by institution analyst ratings in the same industry'. It distinguishes itself from sibling tools like 'industry_peers' and 'institution_rating' by combining both concepts, and mentions pagination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as 'industry_peers' or 'institution_rating'. No exclusions or context for selection are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intradayIntraday LineARead-onlyIdempotentInspect
Get intraday minute-by-minute price/volume data. trade_sessions: "intraday" (default, regular hours) or "all" (include pre-market and post-market)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| trade_sessions | No | Trade sessions to include: "intraday" (default, regular hours only) or "all" (include pre-market and post-market). |
TDQS
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 that data is minute-by-minute and explains trade session options, but does not disclose any additional traits like data limits or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: the first states the core purpose, the second explains the key parameter. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain the return structure (e.g., fields like price, volume, timestamp). For a data retrieval tool, this is a gap. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description reiterates the trade_sessions parameter, adding minimal context (default vs all). Baseline 3 since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets intraday minute-by-minute price/volume data, with a specific verb ('Get') and resource. It distinguishes from siblings like candlesticks or quote by specifying granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the trade_sessions parameter and its options, but does not explicitly state when to use this tool vs alternatives (e.g., candlesticks for different intervals). No guidance on exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invest_relationInvestor RelationsBRead-onlyIdempotentInspect
Get investor relations events and announcements.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, and the description is consistent with these. However, it adds no additional behavioral context such as data scope, pagination, or response characteristics 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence that immediately states the tool's purpose with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with output schema and strong annotations, the description is minimally sufficient. It could be more specific about what counts as 'events and announcements,' but the output schema covers return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter 'symbol' is fully documented in the schema with an example ('700.HK'), so the description adds no additional parameter-level meaning. Baseline 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and identifies resource 'investor relations events and announcements,' making the tool's function clear. It does not explicitly distinguish it from sibling tools like news or filings, but the resource name is sufficiently specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as news, filings, or corp_action. The description simply states what it does without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_calendarIPO CalendarBRead-onlyIdempotentInspect
Show the IPO calendar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety. The description adds no extra behavioral context (e.g., what the calendar specifically shows). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It front-loads the purpose clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values. However, it lacks details on the calendar's scope (e.g., dates, events), making it minimally complete for a tool in a complex domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the input schema is fully covered (100% schema description coverage). The description adds no param info, but none is needed. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Show the IPO calendar' clearly states the verb (show) and resource (IPO calendar). However, it does not differentiate from sibling IPO tools like ipo_detail, ipo_listed, etc., which could be confused with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any prerequisites or context 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.
ipo_detailIPO DetailCRead-onlyIdempotentInspect
Show IPO detail for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market: "HK" or "US" (default: inferred from symbol suffix) | |
| symbol | Yes | Security symbol, e.g. "6871.HK" or "ARM.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| profile | No | |
| timeline | No | |
| eligibility | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description only says 'Show' and adds no additional behavioral context such as data freshness, possible delays, or reliance on market data. Minimal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately front-loaded and concise for a simple read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and annotations, the description is too terse for a tool in a large family of IPO-related siblings. It does not indicate what constitutes 'detail' (e.g., pricing, dates, shares) or contrast with similar tools, leaving the agent unsure of its precise scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema; it merely restates that the tool shows detail 'for a symbol', which is already captured in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Show' and the resource 'IPO detail for a symbol'. However, it does not differentiate from sibling tools like 'ipo_calendar' or 'ipo_listed', which are also IPO-related. The name 'ipo_detail' suggests a detailed view, but this is not explicitly confirmed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'ipo_calendar' for listing or 'ipo_subscriptions' for subscription data. The description lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_listedIPO ListedARead-onlyIdempotentInspect
List recently listed IPO stocks (HK+US).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hk | Yes | |
| us | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the market scope (HK+US) and the 'recently listed' aspect, but no further behavioral traits like pagination or ordering 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys all essential information without extraneous words. Every part is earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two parameters and an output schema, the description adequately covers the purpose and scope. No further details are necessary given the supporting structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for page and size parameters. The description adds no additional parameter information, so 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recently listed IPO stocks, specifying markets (HK+US), which distinguishes it from siblings like ipo_calendar (upcoming) and ipo_detail (individual IPOs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as ipo_calendar or ipo_detail. The description implies usage for recent listings but lacks explicit when-not or comparison context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_order_detailIPO Order DetailARead-onlyIdempotentInspect
Show detailed information for a specific IPO order by order_id.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | IPO order ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| market | No | |
| status | No | |
| symbol | No | |
| order_id | No | |
| quantity | No | |
| submitted_at | No | |
| total_amount | No | |
| allotted_quantity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and not destructive. The description adds no extra behavioral context (e.g., no mention of authentication, rate limits, or output structure). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, immediately conveying the tool's purpose and primary input. Every word is essential, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter, annotations covering safety, and an existing output schema, the description is sufficiently complete. It could optionally note that the order_id must come from ipo_orders, but this is not required for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description of 'order_id' as 'IPO order ID' mirrors the schema property description. No additional meaning, format, or examples are provided beyond what the schema already gives. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Show detailed information'), the resource ('a specific IPO order'), and the identifier ('by order_id'). It distinguishes from sibling tools like ipo_orders (which lists orders) and order_detail (for regular orders) through the specific mention of IPO orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have an order_id for an IPO order, but lacks explicit guidance on when to use this tool over alternatives (e.g., ipo_orders for listing, order_detail for non-IPO orders). No when-not-to-use or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_ordersIPO OrdersARead-onlyIdempotentInspect
List IPO orders (active+history). Filter by symbol, market, or status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| market | No | Filter by market: "HK" or "US" | |
| status | No | Filter by order status | |
| symbol | No | Filter by symbol, e.g. "6871.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | Yes | |
| history | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description adds value by specifying it lists both active and history orders. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, front-loaded with key information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a listing tool with output schema present. Could mention pagination behavior but not critical given parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description summarizes filtering options but does not add new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists IPO orders (active and history) and mentions filtering by symbol, market, or status. Distinguished from sibling tools like ipo_detail or ipo_order_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage through description but does not explicitly state when to use this tool versus alternatives like ipo_order_detail or ipo_calendar. No exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_profit_lossIPO Profit / LossARead-onlyIdempotentInspect
Show IPO profit/loss summary and per-stock breakdown. period: all/ytd/1y/3y.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| period | No | Period filter: "all", "ytd", "1y", "3y" (default: "all") |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's read-only and idempotent. The description adds that it shows a summary and per-stock breakdown, but does not elaborate on pagination behavior or data freshness, which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence plus a note on period. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations, the description is fairly complete. However, it could mention that results are paginated via page and size parameters, which are only in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no additional meaning beyond the schema. It reiterates the period values but no new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it shows IPO profit/loss summary and per-stock breakdown, with the period parameter. This distinguishes it from sibling tools like ipo_calendar or ipo_detail which have different focuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the period parameter options but does not provide guidance on when to use this tool versus alternatives, nor does it specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_subscriptionsIPO SubscriptionsARead-onlyIdempotentInspect
List IPO stocks in subscription/pre-filing stage (HK+US).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| hk | Yes | |
| us | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds market scope and stage, but does not disclose any additional behavioral traits like pagination or output limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb 'List', no unnecessary words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Low complexity tool with no parameters and presence of output schema. Description covers purpose and scope but could mention output format or return details for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so schema coverage is 100%. No parameters to explain, so baseline 4 is appropriate. Description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'List', resource 'IPO stocks', and specifies stage ('subscription/pre-filing') and markets ('HK+US'). Distinguishes from sibling tools like ipo_calendar, ipo_detail, ipo_listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives. Does not mention exclusions or provide context for selection among sibling IPO tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macrodataMacro Indicator DataARead-onlyIdempotentInspect
Get historical observations for one macro-economic indicator. Use indicator_code from macrodata_indicators; start_date/end_date accept YYYY-MM-DD. Supports offset/limit pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of data points to return (default 100, max 100). | |
| offset | No | Pagination offset for historical data points, default 0. | |
| end_date | No | Latest release date to include (YYYY-MM-DD, e.g. `"2024-12-31"`). | |
| start_date | No | Earliest release date to include (YYYY-MM-DD, e.g. `"2024-01-01"`). | |
| indicator_code | Yes | Indicator code from `macrodata_indicators`, e.g. `"30771718"`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| info | Yes | |
| count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds useful behavioral context beyond annotations, such as pagination support (offset/limit) and the date format requirement (YYYY-MM-DD), which aids the agent in using the tool correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, providing essential information without unnecessary words. It is front-loaded with the purpose and then details the key parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and well-documented parameters, the description is complete enough. It covers the main purpose, data source, date format, and pagination, but does not mention return format details (handled by output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds context about date format and pagination, which while present in schema, reinforces the usage pattern. This is slightly above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'historical observations for one macro-economic indicator'. It distinguishes itself from the sibling tool 'macrodata_indicators' by specifying it retrieves data for a single indicator, not the list of indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs to use 'indicator_code from macrodata_indicators', providing a clear prerequisite. It does not explicitly state when not to use, but the context is clear enough for a data retrieval tool with a sibling for listing indicators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macrodata_indicatorsMacro Indicator ListARead-onlyIdempotentInspect
List macro-economic indicators. Filter by keyword and country (US/CN/HK/EU/JP/SG). Use the returned indicator_code with macrodata. Supports offset/limit pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of indicators to return (default 100, max 1000). | |
| offset | No | Pagination offset, default 0. | |
| country | No | Filter by country code. One of: "US", "CN", "HK", "EU", "JP", "SG". Omit to return all countries. | |
| keyword | No | Keyword to search indicator names (e.g. "CPI", "非农", "GDP"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | Yes | |
| count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, idempotent, etc. Description adds pagination support (offset/limit) and filtering behavior, which are beyond what annotations cover. Could have mentioned rate limits or response format but not required given output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then filtering, then usage. No redundant words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no required params, rich annotations, and existing output schema, the description covers listing, filtering, pagination, and sibling linkage. Complete for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage with descriptions for all parameters. The description adds cross-tool context (use with macrodata) but does not significantly enhance individual parameter meanings beyond schema. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists macro-economic indicators, with filtering by keyword and country. It distinguishes itself from siblings by specifying the output indicator_code used with macrodata sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use the returned indicator_code with macrodata, providing a clear when-to-use scenario. No alternative or when-not-to is needed given this specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
margin_ratioMargin RatioBRead-onlyIdempotentInspect
Get margin ratio for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| fm_factor | Yes | |
| im_factor | Yes | |
| mm_factor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description repeats 'Get' which aligns with read-only behavior, but adds no additional behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at one sentence with no wasted words. It is front-loaded with the verb and resource, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimally sufficient given the single parameter and existence of an output schema. However, it does not explain what a margin ratio is or what the output contains, which could be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with the 'symbol' parameter fully described. The description adds no extra meaning to the parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'margin ratio for a symbol', making the tool's purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'quote' that might also provide margin-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No context on prerequisites, limitations, or comparison with sibling tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_statusMarket StatusARead-onlyIdempotentInspect
Get current market trading status for all markets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| market_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety profile is clear. The description adds 'current' but no further behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with purpose. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, rich annotations, and presence of output schema, the description is complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Per rubric, baseline for 0 params is 4. Description adds no parameter detail but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns current market trading status for all markets, using a specific verb and resource, and distinguishes it from siblings like quote or candlesticks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like quote or market_temperature; lacks context for when-not-to-use or expected prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_temperatureMarket TemperatureARead-onlyIdempotentInspect
Get current market sentiment temperature. market: HK/US/CN/SG.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Market code: HK, US, CN, SG |
Output Schema
| Name | Required | Description |
|---|---|---|
| sentiment | Yes | |
| timestamp | Yes | |
| valuation | Yes | |
| description | Yes | |
| temperature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is well covered. The description adds the temporal 'current' qualifier and market scope, but does not disclose additional behavioral details such as return semantics or potential edge cases. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word carries meaning: the action, the resource, and the allowed market values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one fully documented parameter, rich annotations, and an output schema, the description is sufficiently complete. It states the tool's purpose and scope, and no critical information is missing for invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so the baseline is 3. The description simply restates the market codes ('HK/US/CN/SG') without adding examples, value constraints, or deeper meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('current market sentiment temperature'), and enumerates the supported markets (HK/US/CN/SG). It clearly differentiates from the sibling 'history_market_temperature' via the word 'current'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for current sentiment readings, but it does not explicitly state when to use it versus alternatives like 'history_market_temperature' or 'market_status'. No exclusions or alternative tool references are provided, so usage guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
newsNewsARead-onlyIdempotentInspect
Get latest news articles for a symbol. Returns items[]{id, title, source, publish_time, summary, url, related_symbols[]}.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds the return structure but does not provide additional behavioral context such as pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a compact return type snippet, front-loading the action and providing essential information with no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, the description covers the purpose and return format adequately. It could mention if there are any limits on the number of articles, but the schema annotations handle safety and idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter 'symbol' with an example. The description does not add further semantics beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves latest news articles for a symbol, and lists the exact return structure (items array with fields). This distinguishes it from sibling 'news_search' which likely searches news by keyword.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case (news for a symbol) but does not explicitly advise when to use this tool over alternatives like 'news_search' or other data-fetching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
news_detailNews DetailARead-onlyIdempotentInspect
Get one news article's full detail by id (from news/news_search).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | News article ID (numeric), e.g. "7123456789012345678". Get IDs from `news` or `news_search`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| body | No | |
| title | No | |
| author | No | |
| images | No | |
| tickers | No | |
| description | No | |
| likes_count | No | |
| published_at | No | |
| shares_count | No | |
| comments_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral context by specifying that exactly one article is retrieved, that the lookup is by ID, and that IDs originate from `news`/`news_search`—value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to identifying the action, resource, and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one required parameter), strong annotations, full schema coverage, and presence of an output schema, the description is sufficient. It tells the agent what the tool does, where the input comes from, and how it relates to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `id` parameter is already well documented with type, example, and source guidance ('Get IDs from news or news_search'). The description's mention of `(from news/news_search)` adds no new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Get') and resource ('one news article's full detail') with a clear access path ('by id'). It naturally distinguishes from siblings like `news` and `news_search` by indicating this is a single-article detail lookup rather than a list/search operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly places this tool after `news` or `news_search`, implying it should be used when you already have an article ID and need full details. It provides clear context but does not explicitly state when not to use it or mention alternative detail tools among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
news_searchNews SearchARead-onlyIdempotentInspect
Search news articles by keyword. Returns news_list[]{id, title, description, source_name, publish_at (RFC3339), score}. Paginate with score+publish_at_timestamp+id cursors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default: 20) | |
| keyword | Yes | Search keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating safe, read-only behavior. The description adds value by disclosing the return format (list of fields with types) and pagination mechanism, which are behavioral traits not covered by annotations. This is sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences with no unnecessary words. The first sentence states the purpose, and the second provides essential output and pagination details. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description compensates by listing the return fields and their types (e.g., publish_at in RFC3339) and explaining pagination cursors. This is comprehensive for a search tool. Minor missing details like error handling could be added, but not required for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters (keyword and limit) with descriptions, achieving 100% coverage. The description does not add new information about the parameters; it only describes the output. Thus, baseline score of 3 is appropriate as the schema already provides necessary semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search news articles by keyword.' It specifies the verb (Search), resource (news articles), and the primary input (keyword). The returned fields are listed, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance. It mentions pagination details ('Paginate with score+publish_at_timestamp+id cursors'), which is helpful for iterating results, but does not specify when to use this tool over alternatives (e.g., a 'news' sibling) or any prerequisites. The context is implied but could be improved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nowCurrent TimeARead-onlyIdempotentInspect
Get current UTC time as an RFC3339 string (e.g. "2025-01-15T08:30:00Z"). Use to determine current date/time before making date-based queries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds the return format (RFC3339 string) and usage hint, which is useful but not extensive. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences with no wasted words. It is front-loaded with the key action and format, then provides usage context. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no parameters, no output schema, clear annotations), the description is complete. It explains the return value format and the primary use case, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. Baseline is 4, and the description does not need to add parameter information. It correctly avoids mentioning parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'current UTC time as an RFC3339 string'. The tool name 'now' and title 'Current Time' align perfectly. It distinguishes from sibling tools which are mostly data retrieval or trading tools, none of which just return the current time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to determine current date/time before making date-based queries', providing clear guidance on when to use this tool. It does not mention when not to use, but given the simplicity, that is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operatingOperating PerformanceARead-onlyIdempotentInspect
Get company operating metrics (HK stocks only).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructive behavior. The description adds no further behavioral context beyond confirming it is a read operation. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the action and resource, followed by the scope constraint. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple, one-parameter read tool with an existing output schema. It does not detail the specific metrics returned, but the output schema covers that. Slight improvement could be mentioning the type of operating metrics (e.g., revenue, profit).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a 100% description coverage for the only parameter 'symbol' with an example. The description adds no additional meaning beyond what the schema already conveys, meriting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('company operating metrics'), and the scope ('HK stocks only'), making it distinct from sibling tools that cover other metrics or markets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the stock market restriction ('HK stocks only'), which guides when to use this tool. However, it does not mention alternatives for non-HK stocks or provide explicit 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.
option_chain_expiry_date_listOption Expiry DatesARead-onlyIdempotentInspect
Get option chain expiry dates for a symbol (e.g. AAPL.US). Returns expiry_dates[] as "yyyy-mm-dd" strings. Use with option_chain_info_by_date to get strikes and Greeks.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. The description adds return format (array of date strings) and examples, but does not disclose any additional behavioral traits like ordering or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter, no output schema, and clear annotations, the description is complete: it explains the output format and how to use the result with a sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with a clear description for the only parameter 'symbol'. The description reinforces with an example ('AAPL.US'), adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves option chain expiry dates for a symbol, indicates output format as 'yyyy-mm-dd' strings, and distinguishes from sibling tool 'option_chain_info_by_date' by noting they are used together.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool (to get expiry dates) and directs to 'option_chain_info_by_date' for strikes and Greeks, providing a clear workflow and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_chain_info_by_dateOption Chain by DateARead-onlyIdempotentInspect
Get option chain for an expiry date. Returns strikePrices[]{strike_price, call{symbol, last_done, iv, delta, gamma}, put{symbol, last_done, iv, delta, gamma}}.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date (yyyy-mm-dd) | |
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. It adds value by detailing the return format (strikePrices with call/put fields), which gives the agent a clear picture of what to expect 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and immediately follows with the return structure. Every part is essential; there is no fluff. It is optimally concise for its complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters fully described in the schema, no output schema, but the description provides the return structure. Given the low complexity and annotations, the description is complete enough for an agent to use correctly. It could benefit from clarifying that the date must be an expiration date (not any date), but the schema's date description implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (symbol and date). The description does not add new parameter information but indirectly provides context by showing the return structure, which helps understand how parameters map to output. This meets the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Get option chain for an expiry date.' It includes the return structure, specifying strikePrices with call/put fields. This is specific and distinguishes it from siblings like option_chain_expiry_date_list (which lists expiry dates) and option_quote (for a single option).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'for an expiry date,' which implies the appropriate context. While it does not explicitly mention when not to use it or contrast with siblings, the naming and context make it clear that this tool is for obtaining the chain for a specific date, not for listing dates or quoting individual options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_quoteOption QuoteARead-onlyIdempotentInspect
Get option quotes (max 500 symbols). Returns last_done, prev_close, open, high, low, volume, turnover, implied_volatility, delta, gamma, theta, vega, rho, open_interest per symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Security symbols, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the constraint of a 500-symbol maximum and lists the return fields, providing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and then lists the fields, with no unnecessary words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the lack of an output schema, the description adequately lists the return fields. However, it does not explain field semantics or pagination, which could be inferred from domain knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a description for the sole parameter 'symbols', with 100% coverage. The description mentions a max of 500 symbols but does not add additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets option quotes with a maximum of 500 symbols, and lists the specific fields returned (last_done, prev_close, etc.), distinguishing it from sibling tools like 'quote' (for stocks) and 'warrant_quote'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it provide guidance on excluded scenarios or prerequisites. Usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_volumeOption VolumeARead-onlyIdempotentInspect
Get real-time option call/put volume stats for a US stock. Returns {call_volume, put_volume, put_call_ratio, call_oi, put_oi} and top active contracts.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Underlying symbol (US market only), e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, safe behavior. The description adds context about real-time data and return fields, but no additional behavioral traits like data freshness or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficiently structured with key information front-loaded. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description adequately explains what it returns. Could mention time zone or data source, but sufficient for a straightforward stat retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single fully described parameter. The description does not add meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides real-time option call/put volume stats for a US stock, listing specific return fields. It distinguishes from sibling tools like option_quote and option_chain but does not explicitly differentiate from option_volume_daily.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving option volume data but offers no guidance on when to use this tool over alternatives like option_volume_daily or related chain tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
option_volume_dailyOption Volume (Daily)ARead-onlyIdempotentInspect
Get daily historical option stats for a US stock. Returns items[]{date, call_volume, put_volume, put_call_vol_ratio, call_oi, put_oi, put_call_oi_ratio}.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of trading days to return (default 20) | |
| symbol | Yes | Underlying symbol (US market only), e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's statement 'Get daily historical option stats' is consistent. It adds the return fields but no further behavioral details (e.g., data range, rate limits). For a tool with rich annotations, this is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that clearly states the purpose and lists the return fields. Every word is meaningful and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes the return structure (items with fields), which is helpful given no output schema. However, it omits details like how far back data goes, default date range, or any usage constraints beyond the schema's note about US stocks only. Adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters ('symbol' and 'count'). The description does not add extra 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'daily historical option stats', and the scope 'for a US stock'. It lists the returned fields, making the tool's purpose unmistakable. This distinguishes it from siblings like 'option_volume' or 'option_quote'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. There are many sibling tools (e.g., 'option_volume', 'option_chain_info_by_date') but no comparison or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_detailOrder DetailBRead-onlyIdempotentInspect
Get detailed information about a specific order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID (from today's orders or order history) |
Output Schema
| Name | Required | Description |
|---|---|---|
| msg | No | |
| tag | No | |
| side | No | |
| order | No | |
| price | No | |
| status | No | |
| symbol | No | |
| currency | No | |
| order_id | No | |
| quantity | No | |
| last_done | No | |
| order_type | No | |
| stock_name | No | |
| trigger_at | No | |
| updated_at | No | |
| expire_date | No | |
| outside_rth | No | |
| limit_offset | No | |
| submitted_at | No | |
| time_in_force | No | |
| trigger_price | No | |
| executed_price | No | |
| trigger_status | No | |
| trailing_amount | No | |
| trailing_percent | No | |
| executed_quantity | No | |
| current_millisecond | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the basic read operation, but it does not contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is appropriately sized for a simple read-only lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, one well-documented parameter, strong annotations, and an output schema, the description is nearly complete. It could be slightly improved by noting the source of order IDs or distinguishing from IPO order details, but it is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single order_id parameter is already described as coming from today's orders or order history. The description adds no additional parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving detailed information about a specific order. It is distinct from list-oriented tools like today_orders and history_orders, though it does not explicitly differentiate itself from ipo_order_detail or other order-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that the order_id must come from today's orders or order history, nor does it contrast with sibling tools like today_orders, history_orders, or ipo_order_detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
participantsMarket ParticipantsARead-onlyIdempotentInspect
Get HK market participant broker information. Returns participants[]{broker_ids[], name_en, name_cn, name_hk}. Use broker_ids to interpret broker queue data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, non-destructive, idempotent, and open-world. Description adds value by detailing returned fields (broker_ids, names) and purpose (interpreting broker queue data), 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information. Purpose is front-loaded, and every sentence is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters or output schema, the description fully explains what the tool returns and how it is used (for broker queue data). 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. Description compensates by explaining the output structure, which aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get HK market participant broker information' with a specific verb and resource, and differentiates from sibling 'brokers' by specifying HK market participants and broker_ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It indicates when to use: 'Use broker_ids to interpret broker queue data.' No explicit alternatives or exclusions, but provides actionable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profit_analysisProfit AnalysisARead-onlyIdempotentInspect
Get portfolio profit and loss analysis summary. start/end: optional date range in yyyy-mm-dd format. Both must be provided together — passing only one returns empty results.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (yyyy-mm-dd). Must be paired with `start`; passing only one returns empty results. | |
| start | No | Start date (yyyy-mm-dd). Must be paired with `end`; passing only one returns empty results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, etc. Description adds context about parameter pairing and empty results, which is helpful but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main action, no redundancy, every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 optional parameters and no output schema, the description covers essential usage and constraint completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds format (yyyy-mm-dd) and the pairing constraint, enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get' and resource 'portfolio profit and loss analysis summary', distinguishing it from sibling tools like profit_analysis_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific guidance on optional date range and explicit constraint that both dates must be provided together. Lacks mention of when not to use but is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profit_analysis_detailProfit Analysis DetailARead-onlyIdempotentInspect
Get detailed profit and loss analysis for a specific symbol. start/end: optional date range in yyyy-mm-dd format. Both must be provided together — passing only one returns empty results.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date (yyyy-mm-dd). Must be paired with `start`; passing only one returns empty results. | |
| start | No | Start date (yyyy-mm-dd). Must be paired with `end`; passing only one returns empty results. | |
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly, openWorld, idempotent, and non-destructive, ensuring an agent knows it's safe. The description adds key behavioral insight: providing only one of the date parameters returns empty results. This 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the main action, second clarifies parameter usage. No filler, front-loaded with purpose, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers the purpose, required symbol, and optional date constraints with behavior. It could optionally mention the response nature, but it is adequately complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters, but the description reinforces the mutual dependency of start and end dates and explicitly states the empty result behavior for incomplete pairs. This adds practical value beyond the schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'detailed profit and loss analysis for a specific symbol,' using a specific verb and resource. It distinguishes from the sibling 'profit_analysis' by emphasizing 'detailed,' indicating a more granular report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use the date parameters (both required together) and the consequence of misuse (empty results). However, it does not provide guidance on when to use this tool versus its sibling 'profit_analysis' or any other alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profit_analysis_realizedProfit Analysis (Realized, US)ARead-onlyIdempotentInspect
Get realized P&L for a US account, broken down by category (stock/option/crypto) and period. US accounts only; errors with DcRegionRestricted for HK/CN/SG accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category: "STOCK", "OPTION", "CRYPTO", or omit for all. | |
| currency | No | Currency to report in, e.g. "USD" (default: "USD"). US accounts only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| realized_pl_list | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds useful behavioral info: region restriction and error behavior ('DcRegionRestricted'). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences (25 words). Front-loaded with main action and scope. No superfluous information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with comprehensive annotations and existing output schema, the description fully specifies behavior: what it does, constraints, and error conditions. Complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides clear descriptions for both parameters (category and currency) with 100% coverage. Description reinforces that currency is typically USD and the tool is US-only. Adds value by clarifying region restriction, which impacts parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Get realized P&L for a US account, broken down by category and period.' Clearly specifies verb (get), resource (realized P&L), and scope (US accounts). Distinct from sibling profit_analysis and profit_analysis_detail by focusing on realized and US-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'US accounts only; errors with DcRegionRestricted for HK/CN/SG accounts.' Provides clear context for when to use (US accounts) and when not to (other regions). Does not mention alternative tools for non-US accounts, but the error message effectively guides agents away from misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quant_runQuant — Run Indicator ScriptARead-onlyIdempotentInspect
Run a quant indicator script against historical K-line data on the server. Executes the script server-side and returns the computed indicator/plot values as JSON. Periods: 1m, 5m, 15m, 30m, 1h, day, week, month, year (default: day). The optional input parameter accepts a JSON array matching the order of input.*() calls in the script, e.g. "[14,2.0]".
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (YYYY-MM-DD) for the K-line range | |
| input | No | Script input values as a JSON array, e.g. "[14,2.0]". Must match the order of input.*() calls in the script. | |
| start | Yes | Start date (YYYY-MM-DD) for the K-line range | |
| period | No | K-line period: 1m, 5m, 15m, 30m, 1h, day, week, month, year (default: day) | day |
| script | No | Indicator script source. | |
| symbol | Yes | Symbol in <CODE>.<MARKET> format, e.g. TSLA.US, 700.HK |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive, and open-world hints. The description adds that execution is server-side and returns indicator/plot values as JSON, providing useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a period list and input example. All information is front-loaded and no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the output is JSON of computed values. It covers main parameters and execution. However, it lacks details on error handling or script syntax, but is adequate for a script-running tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the period options (listing them with default) and the input parameter's format with an example, clarifying its relationship to script inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a quant indicator script against historical K-line data, specifying the verb 'run' and resource 'quant indicator script'. It is distinct from sibling tools as none appear to execute user-provided scripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives. It states the tool runs server-side and returns JSON, but does not mention prerequisites or compare to other indicator-related tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoteQuoteARead-onlyIdempotentInspect
Get latest price quotes. Returns per symbol: last_done, prev_close, open, high, low, volume, turnover, change_rate, change_value, trade_status, timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Security symbols, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the exact return fields, which annotations do not cover. However, no additional behavioral traits (e.g., rate limits, caching) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with structured list of return fields. Extremely concise with no redundancy, front-loading the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, the combination of schema, annotations, and description is nearly complete. Missing details like timestamp format are minor; otherwise sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (parameter 'symbols' is fully described with examples). The description does not add parameter information beyond the schema; it only describes output. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get latest price quotes' with a specific verb and resource, and lists exact return fields per symbol. This clearly distinguishes it from siblings like candlesticks or intraday which provide different time frames or data granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., 'now' for a single snapshot, 'intraday' for intraday data). The description only states what it does, not when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_categoriesRank CategoriesARead-onlyIdempotentInspect
Get rank tab category configurations for the popularity leaderboard. Pass a second_tags key (e.g. hot_all-us) to rank_list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| first_tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds context about the popularity leaderboard but no additional behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with the main purpose, and the second sentence provides a relevant usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema (not shown), the description sufficiently explains the tool's purpose and provides relevant context about its usage in relation to rank_list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage. Per baseline guidelines, score is 4. Description does not need to add parameter info as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'Get' and the resource 'rank tab category configurations for the popularity leaderboard'. It distinguishes this tool from the sibling 'rank_list' by indicating the data flow between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning passing a second_tags key to rank_list, but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_listRank ListARead-onlyIdempotentInspect
Get ranked stock list by leaderboard tab key. key: from rank_categories second_tags[].key (e.g. "hot_all-us", "hot_up-hk", "trade_heat-us"). market: inferred from key suffix (-us/-hk) or pass explicitly. size: results (default 20).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Tab key from rank_categories second_tags[].key, e.g. "hot_all-us" (US total heat), "hot_up-hk" (HK rising heat), "trade_heat-us" (US hot trades). The "ib_" prefix is stripped from rank_categories keys and added back automatically. | |
| size | No | Number of results to return (default: 20) | |
| market | No | Market override: "US" | "HK" | "CN" | "SG". Defaults to the market suffix in the key (e.g. "ib_hot_all-hk" → HK), then "US". | |
| need_article | No | Whether to include related news articles (default: false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| lists | No | |
| updated_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, openWorldHint. Description adds specific behavior about key format, market inference, and size default, which is sufficient. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: a single sentence followed by key-value explanations. No fluff. Every part is essential and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, output schema exists, and annotations cover safety, the description is largely complete. It covers key, market, and size well, though the need_article parameter is only in the schema. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds valuable context by providing examples for key, explaining market inference logic, and noting default size. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a ranked stock list by leaderboard tab key. It distinguishes from sibling 'rank_categories' (which provides category keys) and other list tools, and explains the key parameter's source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains how to obtain the key from rank_categories second_tags[].key and gives examples. Also clarifies market inference and default size. Could be improved by explicitly stating when to use this versus rank_categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_orderReplace OrderADestructiveIdempotentInspect
Modify an open order's quantity, price, trigger_price, or trailing params. Returns "order replaced" on success. Only open/pending orders can be modified. TWO-STEP CONFIRMATION IS MANDATORY: this tool is a DRY RUN unless you pass the confirmation_code its own dry run returned. Call it first without execute, show the returned preview to the user, and only call it again with execute="" after the user has explicitly confirmed that exact order. The code is derived from the order itself, so it applies only to that exact order. Never quote it back on your own initiative, and never in the same turn the user first asks. The dry run echoes the current order alongside the requested change.
| Name | Required | Description | Default |
|---|---|---|---|
| price | No | New limit price (for limit-style orders) | |
| execute | No | The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed that exact order. The code is single use, expires in 10 minutes, and applies only to this exact order — change any field and it stops working. Never quote it back on your own initiative, and never in the same turn the user first asks. | |
| order_id | Yes | Order ID to replace (returned by submit_order or listed in today_orders / history_orders) | |
| quantity | Yes | New order quantity (number of shares) | |
| limit_offset | No | New limit offset from the trailing stop price (for TSLPAMT / TSLPPCT) | |
| trigger_price | No | New trigger (activation) price (for LIT / MIT / trailing-stop orders) | |
| trailing_amount | No | New trailing amount as absolute price distance (for TSLPAMT) | |
| trailing_percent | No | New trailing percent as decimal e.g. 0.05 = 5% (for TSLPPCT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the most important runtime behavior: calls are dry runs unless a confirmation_code is supplied, nothing reaches the exchange without execute, the code is order-specific, and user confirmation is mandatory before quoting it back. This adds substantial context beyond the annotations and aligns with the destructive/open-world hints; the single-use confirmation model also supports the idempotentHint by preventing duplicate application.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core purpose and then devotes every sentence to safety-critical protocol. There is no filler or redundancy; the length is justified by the destructive, confirmation-gated behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter destructive tool with no output schema, the description covers the success return, the dry-run preview/confirmation_code, the execution condition, and eligibility constraints. The order-type specifics are already in the parameter descriptions, so nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter's meaning and order-type constraints. The prose adds only a high-level field list and does not amplify or correct the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and scope: 'Modify an open order's quantity, price, trigger_price, or trailing params.' This clearly distinguishes it from submit_order (creation) and cancel_order (deletion), and it does not merely restate the title 'Replace Order.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit eligibility constraints ('Only open/pending orders can be modified') and a mandatory dry-run-then-confirm workflow. It does not name alternative tools such as cancel_order or submit_order for cases where replacement is inappropriate, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screener_indicatorsScreener IndicatorsARead-onlyIdempotentInspect
Get all available screener indicator keys with units and default value ranges. Technical indicators include a tech_values field showing available options (e.g. macd_day: {category:[goldenfork,deadcross], period:[day,week]}).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Optional security symbol to filter indicators for a specific stock, e.g. "AAPL.US" |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds context about the response structure: 'Technical indicators include a tech_values field showing available options'. This explains behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first clearly states the purpose, second elaborates on a key detail (tech_values structure). No unnecessary words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that output schema exists (stated), the description covers the essential aspects: keys, units, default ranges, and tech_values. Slightly lacking in explaining how defaults are defined or if there are limits, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a described optional 'symbol' parameter. The description does not mention the parameter, so it adds no value 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'all available screener indicator keys with units and default value ranges', distinguishing it from sibling tools like screener_search or screener_strategy. The verb 'get' and resource 'indicator keys' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a user needs available screener indicators, but it does not explicitly state when to use this tool versus alternatives (e.g., screener_strategy). No exclusion criteria or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screener_recommend_strategiesScreener Recommend StrategiesARead-onlyIdempotentInspect
List platform-preset screener strategies. market: US|HK|CN|SG (default: US). Pass id to screener_search strategy_id to run, or screener_strategy to inspect filter conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market filter: "US" | "HK" | "CN" | "SG" (default: "US") |
Output Schema
| Name | Required | Description |
|---|---|---|
| strategys | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows it is a safe read. The description adds the accepted market values and the chaining contract, but since an output schema exists, the lack of return-shape detail is acceptable. Still, no extra behavioral traits (e.g., result limits) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences with zero filler: one for the core purpose, one for the parameter format with default, and one for the next step. Every sentence earns its place and the structure front-loads the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only listing tool with an output schema, the description covers the purpose, the market parameter, and the crucial follow-up chaining to screener_search and screener_strategy that a consumer would need to build a full workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single optional market parameter, the baseline is 3. The description restates the same market format and default as the schema, so it adds little beyond what structured data already provides at the parameter level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List platform-preset screener strategies" uses a specific verb (list) with a well-scoped resource (platform-preset strategies). The qualifier "platform-preset" explicitly differentiates this from the sibling screener_user_strategies, and the chaining note distances it from screener_search and screener_strategy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Useful downstream context is given (pass id to screener_search strategy_id to run, or screener_strategy to inspect filters), which implies what to do with the output. However, it never explicitly states when to use this vs. alternatives such as screener_user_strategies — the contrast is only implied by the word "platform-preset."
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screener_searchScreener SearchARead-onlyIdempotentInspect
Screen stocks. market: US|HK|CN|SG (Mode B required; Mode A uses strategy's market). Mode A: strategy_id from screener_recommend_strategies — auto-runs saved strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 0-based (default: 0) | |
| size | No | Page size (default: 20, max: 100) | |
| market | No | Market: "US" | "HK" | "CN" | "SG". Mode A: overridden by the market embedded in the strategy; pass any value or omit. Mode B: required — determines which market to screen. | |
| conditions | No | Mode B — Filter conditions, passed directly to the API. Omit for Mode A. Fundamental keys (pass with or without filter_ prefix): pettm pbmrq roe roa netmargin salesgrowthyoy netincomegrowthyoy marketcap(亿) circulating_marketcap(亿) prevclose prevchg(%) divyld la epsttm netincome(亿) sales(亿) turnover_rate balance(万) Technical indicator keys (tech_values required; call screener_indicators for schema): macd_day/week → {"category":"goldenfork"|"deadcross","period":"day"|"week"} rsi_day/week → {"value_type":"overbought"|"oversold"} kdj_day/week → {"category":"goldenfork"|"deadcross"} boll_day/week → {"category":"breakthrough_up"|"breakthrough_down"} | |
| sort_order | No | Sort order: "asc" | "desc" (default: "desc") | |
| sort_by_key | No | Indicator key to sort results by (e.g. "marketcap", "roe"). Defaults to the first condition key. Must be one of the condition or extra_returns keys. | |
| strategy_id | No | Mode A — Strategy ID from screener_recommend_strategies screeners[].id. The tool auto-fetches the strategy and builds filters. Omit for Mode B. | |
| extra_returns | No | Extra indicator keys to include in each result row (display-only, not used as filters). Same key naming as conditions (filter_ prefix added automatically). Example: ["marketcap", "prevclose", "epsttm"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| total | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not contradict the read-only and idempotent annotations. It adds context about auto-running saved strategies, but does not disclose additional side effects or error conditions beyond what annotations already cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear opening and mode explanations, but it repeats much of the schema's parameter details, making it somewhat verbose. It could be more concise by referencing the schema directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with two modes, the description covers the necessary usage scenarios and cross-references. The presence of an output schema means detailed return values are not needed. It is sufficiently complete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions for all parameters are already detailed, covering market modes, condition keys, and technical indicator formats. The tool description largely duplicates this information without adding new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Screen stocks' and distinguishes two modes (A and B), making its purpose specific. It references related tools for strategies and indicators, reinforcing its role as a screening tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions Mode A for strategy-based screening and Mode B for direct filter conditions. It points to screener_recommend_strategies for strategy IDs and screener_indicators for technical indicator schema, providing clear guidance on when 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.
screener_strategyScreener StrategyARead-onlyIdempotentInspect
Inspect a screener strategy's filter conditions before running it. Use screener_search strategy_id to execute the strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Strategy ID from screener_recommend_strategies or screener_user_strategies screeners[].id |
Output Schema
| Name | Required | Description |
|---|---|---|
| filter | No | |
| market | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations (readOnlyHint, idempotentHint, destructiveHint=false) but does not add additional behavioral details beyond what annotations already provide. With rich annotations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word is meaningful. No wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is complete. It explains what the tool does and how to execute the strategy, and the output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already fully describes the single parameter 'id'. The description does not add extra parameter info, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Inspect a screener strategy's filter conditions before running it.' It uses specific verbs and resources, and distinguishes it from the sibling tool 'screener_search' which executes the strategy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (inspect before running) and provides an alternative: 'Use screener_search strategy_id to execute the strategy.' This clearly differentiates usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screener_user_strategiesScreener User StrategiesARead-onlyIdempotentInspect
List the current user's saved screener strategies. market: US|HK|CN|SG (default: US). Pass id to screener_search strategy_id to run, or screener_strategy to inspect conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market filter: "US" | "HK" | "CN" | "SG" (default: "US") |
Output Schema
| Name | Required | Description |
|---|---|---|
| strategys | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the market parameter scope but does not provide additional behavioral context such as return formats or error behavior. Since annotations are strong, the bar is lower, and the description adds minimal extra value, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences. The first sentence states the core purpose, and the second provides usage guidance and cross-references. It is front-loaded and has zero waste, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, the description is complete. The output schema is present (as per context signals), so return value details are covered. The description provides enough context for the agent to know when and how to invoke it, including the market filter and downstream use of the id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'market' with 100% description coverage, including allowed values and default. The description repeats this information ("market: US|HK|CN|SG (default: US)") without adding any new semantic meaning, such as format, examples, or interplay with other parameters. Since schema does the heavy lifting, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: "List the current user's saved screener strategies." It specifies the resource (user's saved screener strategies) and the operation (list). It also distinguishes from sibling tools like screener_recommend_strategies (recommended vs. user's own) and screener_strategy (inspect conditions vs. list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: to list the user's saved strategies. It also gives guidance on the workflow: "Pass id to screener_search strategy_id to run, or screener_strategy to inspect conditions." This implies downstream usage, but it does not explicitly state when NOT to use it or contrast with alternatives for listing, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_factsSecurity FactsARead-onlyIdempotentInspect
List a security's fact (catalyst) events — anomaly detections, factor readings, data sources and natural-language summaries — filtered by time range and count. Facts are what strategies react to: a signal names its trigger in key_fact_id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of facts to return. If the number of facts in the time range exceeds this limit, only the latest 'limit' facts will be returned. Defaults to 100. | |
| symbol | Yes | Security symbol to query, e.g. "AAPL.US" or "700.HK". | |
| end_time | No | The end time of the fact to be queried, formatted as 2006-01-02T15:04:05Z in UTC Timezone. If left empty, the query will default to retrieving the latest data. | |
| begin_time | No | The optional start time of the fact query, formatted as 2006-01-02T15:04:05Z in UTC Timezone. If left empty, the query will include the earliest available data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| facts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, open-world, and non-destructive, so the safety profile is covered. The description adds useful context about the type of content returned and the filtering behavior, but it does not disclose additional behavioral traits such as ordering guarantees, pagination beyond the limit parameter, or rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core purpose and scope are front-loaded, and the second sentence adds a meaningful relational hint about key_fact_id and strategies without unnecessary length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full parameter documentation and an output schema, the description covers everything an agent needs to select and call it correctly. It explains what facts are, what they contain, how they relate to signals, and how they can be filtered, making the tool self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having a clear description including defaults and time format. The description paraphrases time-range and count filtering but adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'List a security's fact (catalyst) events' — and further clarifies scope by enumerating content types: anomaly detections, factor readings, data sources, and natural-language summaries. It also distinguishes facts from related concepts by noting that a signal names its trigger in key_fact_id, which separates this tool from siblings like signals or anomaly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case — facts are what strategies react to and a signal names its trigger in key_fact_id — so an agent can infer when this tool is relevant. However, it does not explicitly state when to prefer security_facts over sibling tools such as signals, anomaly, or news, nor does it name any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_listSecurity ListARead-onlyIdempotentInspect
Get security list for a market. Supports market: US, HK, CN, SG. category: "Overnight" (default). page: 1-based page number (default 1). count: records per page (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based (default: 1) | |
| count | No | Records per page (default: 50) | |
| market | Yes | Market code: US, HK, CN, SG | |
| category | No | Category filter. Currently only "Overnight" is supported; omitting defaults to Overnight. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| count | Yes | |
| items | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read operations. The description adds minimal behavioral context beyond repeating parameter defaults. It does not disclose potential constraints 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that lists the core purpose and all parameters efficiently. No extraneous words; it is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 parameters, output schema exists), the description covers the essential information. However, it lacks explicit mention of pagination behavior or result set characteristics, which could be beneficial for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds value by explicitly stating default values for page (1) and count (50) and specifying the default category 'Overnight', enhancing clarity beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a security list for a market, with explicit supported markets (US, HK, CN, SG) and parameter details. It is specific and distinguishes from siblings as no other sibling tool offers the same functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It only describes what it does, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_marginShort MarginARead-onlyIdempotentInspect
Get short margin deposit details for the current account. Returns short positions with margin_amount, margin_rate, interest_rate, symbol, quantity per position.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. Description adds value by listing return fields (margin_amount, margin_rate, etc.), providing additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by return fields. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and return fields. No output schema; description suffices for a simple, parameterless tool. Could mention if results are limited or paginated, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters to document. Baseline for 0 params is 4; description adds no parameter info but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states action ('Get'), resource ('short margin deposit details'), and scope ('current account'). Lists return fields, differentiating it from related siblings like 'short_positions' and 'short_trades'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings (e.g., 'short_positions', 'short_trades'). Does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_positionsShort PositionsARead-onlyIdempotentInspect
Get short interest history (open short positions) for HK or US stocks. Market inferred from symbol suffix. count: 1–100 (default 20). Unified data[]{timestamp(RFC3339), short_shares(open short position in shares), rate(decimal ratio e.g. 0.009=0.9%), close}. US-only: avg_daily_vol, days_to_cover. HK-only: balance(outstanding short position in HKD). US source: FINRA bi-weekly. HK source: HKEX daily.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of records to return (1-100, default 20) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" (US) or "700.HK" (HK). Market is inferred from suffix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds behavioral details beyond annotations: market inference logic, data sources (FINRA bi-weekly, HKEX daily), and per-market differences (US-only avg_daily_vol, days_to_cover; HK-only balance). There is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded purpose and clear field breakdowns. It is somewhat verbose but every sentence adds value (sources, per-market details, count range). Could be slightly tighter but highly effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains the output fields for both markets, including sources and count constraints. It covers all necessary context for an agent to correctly invoke and interpret the tool, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds significant meaning: 'count' default 20, 'symbol' market inference from suffix. It also explains the returned data structure fields (timestamp, short_shares, rate, close) with per-market additions, compensating for the lack of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get short interest history (open short positions) for HK or US stocks' with explicit differentiation from siblings like 'short_margin' and 'short_trades'. It specifies the resource (short interest history) and the action (get), distinguishing it from other short-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context such as 'Market inferred from symbol suffix' and 'count: 1–100 (default 20)'. While it does not explicitly state when to use vs. alternatives, the sibling context and description imply this is for open short positions history, which is sufficiently clear for agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_tradesShort TradesARead-onlyIdempotentInspect
Get daily short-sale volume history for HK or US stocks. Market inferred from symbol suffix. last_timestamp: unix seconds (omit for latest). page_size: 1–100 (default 20). US source: FINRA/NASDAQ daily. HK source: HKEX daily.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "AAPL.US" (US) or "700.HK" (HK). Market is inferred from suffix. | |
| page_size | No | Page size: 1–100 (default: 20) | |
| last_timestamp | Yes | Query cutoff timestamp in seconds (pass current timestamp for latest data) |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety profile is clear. The description adds valuable behavioral context beyond annotations, such as market inference logic, data sources (FINRA/NASDAQ, HKEX), and parameter semantics (e.g., last_timestamp as unix seconds). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at four sentences, front-loading the core purpose ('Get daily short-sale volume history for HK or US stocks') and then immediately covering key behavioral and parameter details without any superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (documenting return values) and comprehensive annotations, the description covers all necessary behavioral and usage context: market scope, symbol inference, parameter details, and data sources. It is fully adequate for an agent to correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents parameters well. The description adds further meaning by explaining that last_timestamp is in unix seconds and can be omitted for latest data, page_size range (1-100) and default (20), and provides a symbol example with suffixes. This enhances the schema's documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'daily short-sale volume history' for a specific set of markets (HK or US), with a specific resource (short-sale volume) and scope (HK/US), and distinguishes from siblings by focusing on short-sale volume data as opposed to related tools like short_margin or short_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (get short-sale volume history for HK/US stocks), explains market inference from symbol suffix, and mentions data sources. However, it does not explicitly state when not to use this tool or provide alternatives among siblings, which would be helpful given the many related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signal_detailSignal DetailARead-onlyIdempotentInspect
Get one signal by ID (from signals). Same fields as the list, plus analysis — the full strategy analysis: fit scores, valuation scenarios, evidence sources and related fact IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | Yes | Signal ID, e.g. "sign_992_1a00c9425c3_48ab". Get IDs from `signals`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| market | Yes | |
| status | Yes | |
| symbol | Yes | |
| outlook | Yes | |
| summary | Yes | |
| analysis | No | |
| created_at | Yes | |
| expression | Yes | |
| updated_at | Yes | |
| key_fact_id | Yes | |
| strategy_id | Yes | |
| company_name | Yes | |
| key_catalyst | Yes | |
| outlook_desc | Yes | |
| recommend_by | Yes | |
| strategy_name | Yes | |
| analysis_price | Yes | |
| benchmark_price | Yes | |
| optimistic_price | Yes | |
| conservative_price | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, non-destructive, idempotent, and open-world. The description adds valuable behavioral context by disclosing the response composition: list fields plus `analysis` containing fit scores, valuation scenarios, evidence sources, and related fact IDs. This helps the agent understand what the operation returns without relying solely on the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core operation, then adds only relevant details about the response and analysis contents. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema and strong annotations, the description covers all necessary context: how to obtain the ID, how the output relates to the list tool, and what the additional analysis field contains. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single `signal_id` parameter is already well documented with an example and instruction to get IDs from `signals`. The tool description largely repeats this, adding no new parameter semantics beyond what the schema already provides. A baseline score of 3 is appropriate given the schema handles the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get one signal by ID'. It clearly differentiates from the sibling list tool `signals` by stating it returns a single signal and additionally includes the `analysis` field. This makes the tool's purpose unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is used to fetch a single signal by ID, and IDs come from `signals`. Mentioning 'Same fields as the list, plus analysis' implies the tool is the right choice when full analysis details are needed. It stops short of explicitly stating when not to use it or naming alternatives beyond `signals`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signalsSignalsARead-onlyIdempotentInspect
Query strategy signals — a strategy's take on a security, triggered by a catalyst. Filter by symbol, strategy, catalyst and time range; page with limit/offset. The full strategy analysis is omitted here — fetch it with signal_detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return. Defaults to 20. | |
| offset | No | Number of results to skip for pagination. Defaults to 0. | |
| end_time | No | Filter records created at or before this time. ISO 8601 datetime with timezone. If omitted, no upper bound. | |
| start_time | No | Filter records created at or after this time. ISO 8601 datetime with timezone, e.g. 2024-01-15T10:30:00Z. If omitted, no lower bound. | |
| strategy_id | No | Filter by strategy id (e.g., "buffett-value"). Preferred over the deprecated strategy_name; takes precedence when both are provided. | |
| symbol_name | No | Filter by security symbol, e.g. "AAPL.US" or "700.HK". If omitted, returns signals for all symbols. | |
| catalyst_name | No | Filter by the name of the factor that triggered the signal, e.g. "EARNINGS_RELEASED" or "macd_12_26_9" — not the display label returned in key_catalyst. If omitted, signals with any catalyst name are returned. | |
| catalyst_type | No | Filter by the catalyst type that triggered the signal, e.g. "News", "Fundamental", "Technical". If omitted, signals with any catalyst type are returned. | |
| strategy_name | No | Filter by strategy name. If omitted, returns signals from all strategies. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| signals | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context beyond annotations: it discloses that the full strategy analysis is intentionally omitted from responses and that pagination is supported via limit/offset. This is useful and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The purpose and definition are front-loaded, followed by a concise list of filtering/pagination capabilities and a clear pointer to the alternative tool. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 9 optional parameters, the presence of an output schema, and annotations covering safety, the description is complete. It explains what signals are, how to constrain results, how to page, and where to get the omitted full analysis. An agent can invoke this correctly without missing critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed descriptions for all 9 parameters, so the schema carries the semantic weight. The description's mention of filtering by 'symbol, strategy, catalyst and time range' is a helpful grouping but does not add material new 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Query') and resource ('strategy signals'), and defines what a signal is ('a strategy's take on a security, triggered by a catalyst'). It clearly distinguishes itself from the sibling signal_detail by stating that the full analysis is omitted here, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the scope of this tool (querying signals with filters and pagination) and provides an explicit alternative: 'fetch it with signal_detail' when the full analysis is needed. This tells the agent when to use this tool vs. a specific sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statement_exportExport StatementARead-onlyIdempotentInspect
Get a pre-signed download URL for a statement data file (obtained from statement_list).
| Name | Required | Description | Default |
|---|---|---|---|
| file_key | Yes | File key from statement_list, e.g. "/statement_data/data/.../20975338.json" |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and others. The description adds that the tool returns a pre-signed URL, which is a key behavioral detail. No contradictions with annotations; the description enhances transparency about the output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the purpose. Every word is necessary and contributes to understanding. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists), the description completely covers the necessary context. It references the prerequisite step ('obtained from statement_list') and explains the output (pre-signed URL), making it fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'file_key' that has a detailed description and example. The tool description does not add additional meaning beyond what the schema provides, so 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'pre-signed download URL for a statement data file', referencing the sibling tool 'statement_list' for obtaining the file, effectively distinguishing this tool from others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells users to use this tool after obtaining a file from 'statement_list', providing clear context for when to use it. It does not explicitly list alternatives or when not to use, but the context is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statement_listStatement ListARead-onlyIdempotentInspect
List available account statements (daily/monthly). Use the id with statement_export to download.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of records to return. Defaults to 30 for "daily" or 12 for "monthly". The default depends on `statement_type`, so the schema declares none: `skip_serializing_if` is what stops schemars deriving `default: null` from `serde(default)`, which would contradict the integer type. | |
| start_date | No | Start date (yyyy-mm-dd). Defaults to 30 days ago for "daily" or 12 months ago for "monthly". | |
| statement_type | No | Statement type: "daily" (default) or "monthly". |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context that returned ids are intended for use with statement_export. However, it does not disclose additional behavioral traits such as pagination, ordering, or how 'available' is determined, though the output schema and parameter descriptions supply some of this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core purpose is front-loaded, and the workflow hint about using the id with statement_export is placed second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with three optional, well-documented parameters and an output schema present, the description is sufficient. It explains the resource, the statement frequency options, and how to connect to the download tool. The annotations and schema carry the remaining operational details, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already provides detailed descriptions for all three parameters including defaults for limit and start_date based on statement_type. The tool description only repeats the daily/monthly distinction already present in the statement_type parameter description, adding no meaningful semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List available account statements (daily/monthly).' It clearly identifies the tool's scope and distinguishes it from the related statement_export tool by explaining that the ids from this listing are used for download. An agent can immediately understand what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs the agent to use statement_export with the id to download statements, clarifying the complementary relationship and when to use each tool. It tells the agent what to do with the output of statement_list, making the workflow explicit. No further alternative-selection guidance is needed for this simple listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
static_infoSecurity Static InfoARead-onlyIdempotentInspect
Get static info for securities. Returns per symbol: symbol, name_cn, name_en, exchange (e.g. NASDAQ), type (e.g. US_Stock), lot_size, listed_date, delisted (bool). US accounts only: .BKKT crypto symbols (e.g. BTCUSD.BKKT) are routed to a separate US crypto overview endpoint; .HAS/.OSL crypto symbols are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Security symbols, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and safe. The description adds value by detailing the return structure (list of fields) and special routing for certain crypto symbols, which goes beyond what annotations provide. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences. The first sentence states the purpose and return fields, and the second adds a crucial special-case note. Every sentence adds value, and it is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description is fairly complete. It explains what the tool returns and special behavior for specific symbols. Missing details like error handling for invalid symbols are not critical for the core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'symbols' with a clear description. The tool description adds no new semantic information about the parameter beyond stating it takes security symbols. Since schema coverage is 100%, the description meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get static info for securities.' It lists specific fields returned per symbol and differentiates from siblings by specifying it provides static, non-time-varying data. The mention of special handling for .BKKT and .HAS/.OSL symbols further 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for using the tool (to retrieve static security info) and includes a when-not case for .BKKT symbols with US accounts. However, it does not explicitly name alternative tools for .BKKT crypto or contrast with siblings like 'company' or 'quote', leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_positionsStock PositionsARead-onlyIdempotentInspect
Get current stock positions across all channels. US accounts only: an additional us_asset_overview field {cash_list, stock_list, option_list, crypto_list, cash_buy_power, overnight_buy_power} is included alongside the existing data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| list | Yes | |
| warnings | No | |
| us_asset_overview | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent, non-destructive), so the bar for extra behavioral disclosure is lower. The description adds meaningful context by revealing that US accounts receive an extra us_asset_overview field with a specific list of sub-fields, which is not visible in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action is front-loaded in the first sentence, and the second sentence adds only the necessary US-account-specific conditional detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema present, and annotations covering safety and idempotency, the description supplies the remaining needed context: the data scope, channel coverage, and the US-specific additional field. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides full coverage by default. Per the calibration baseline for 0-parameter tools, the description does not need to explain parameters, and it appropriately avoids inventing parameter-related detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('current stock positions across all channels'), making the tool's purpose immediately clear. It also distinguishes it from sibling tools like fund_positions or short_positions by the 'stock positions' and 'all channels' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current stock positions across all channels' clearly establishes when this tool is appropriate: whenever current, cross-channel stock position data is needed. The US-accounts-only qualifier provides additional context about applicability, though no explicit exclusions or alternative tool names are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_orderSubmit OrderADestructiveInspect
Submit a buy/sell order. DRY RUN unless execute is the confirmation_code from its own dry run: call once without execute, show the preview to the user, then re-call quoting the code only after they explicitly confirm.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | Buy or Sell | |
| remark | No | Order remark (max 255 characters) | |
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| execute | No | The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS SENT. Omitted (the default) makes this a DRY RUN: the request is validated and echoed back with a three-digit `confirmation_code`, and nothing reaches the exchange. Required protocol: call once without `execute`, show the returned preview to the user, and call again quoting the code only after the user has explicitly confirmed that exact order. The code is single use, expires in 10 minutes, and applies only to this exact order — change any field and it stops working. Never quote it back on your own initiative, and never in the same turn the user first asks. | |
| order_type | Yes | Order type (HK supports all; US supports LO/MO/LIT/MIT/TSLPAMT/TSLPPCT only): - LO (Limit Order): requires submitted_price - ELO (Enhanced Limit Order, HK only): requires submitted_price - MO (Market Order): no price required - AO (At-auction Order, HK only): executed at auction price, no price required - ALO (At-auction Limit Order, HK only): requires submitted_price - ODD (Odd Lots Order, HK only): requires submitted_price, for non-standard lot sizes - LIT (Limit If Touched): requires submitted_price and trigger_price; activates when market price touches trigger_price - MIT (Market If Touched): requires trigger_price only; executes at market when trigger_price is touched - TSLPAMT (Trailing Limit If Touched by Amount): requires trailing_amount and limit_offset; trailing stop by fixed amount - TSLPPCT (Trailing Limit If Touched by Percent): requires trailing_percent (0-1) and limit_offset; trailing stop by percentage - SLO (Special Limit Order, HK only): requires submitted_price; cannot be replaced after submission | |
| expire_date | No | Expiry date (yyyy-mm-dd). Required when time_in_force is GTD | |
| outside_rth | No | Outside regular trading hours: "RTH_ONLY" (regular trading hours only), "ANY_TIME" (any time including pre/post market), "OVERNIGHT" (overnight session, US only) | |
| limit_offset | No | Limit offset from the trailing stop price. Required for: TSLPAMT, TSLPPCT | |
| time_in_force | Yes | Order validity: "Day" (Day Order, expires end of session), "GTC" (Good Til Canceled), "GTD" (Good Til Date, requires expire_date) | |
| trigger_price | No | Trigger (activation) price. Required for: LIT, MIT, TSLPAMT, TSLPPCT | |
| submitted_price | No | Limit price. Required for: LO, ELO, ALO, ODD, LIT, SLO | |
| trailing_amount | No | Trailing amount (absolute price distance). Required for TSLPAMT | |
| trailing_percent | No | Trailing percent as decimal (e.g. 0.05 = 5%). Required for TSLPPCT | |
| submitted_quantity | Yes | Order quantity (number of shares) |
Output Schema
| Name | Required | Description |
|---|---|---|
| dry_run | Yes | |
| preview | No | |
| order_id | No | |
| next_step | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the safety-critical behavior: without execute nothing is sent, and with the code the order goes live. It goes well beyond the destructiveHint annotation by detailing the single-use confirmation code, 10-minute expiry, exact-order binding, and the ban on self-initiated confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The top-level description is two dense sentences that front-load the most important operational fact: 'DRY RUN unless execute is the confirmation_code.' Detailed field explanations are correctly delegated to the schema, so no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, destructive tool, the description plus schema covers the full invocation protocol, user-confirmation requirement, code expiry, and field-level constraints. An output schema exists, so return-value documentation is appropriately not required here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema's per-field descriptions are already rich, especially the execute field explaining the dry-run protocol. The top-level description adds no additional parameter-level semantics beyond what the schema already provides, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with the precise action 'Submit a buy/sell order' and clearly frames the dry-run/live distinction. It does not explicitly position itself against related sibling tools like cancel_order or replace_order, so it misses the full differentiation bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete invocation protocol: call once without execute, show the preview, and re-call only after explicit confirmation. It also includes clear prohibitions such as 'Never quote it back on your own initiative' and 'never in the same turn the user first asks,' though it never names alternative order-management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
today_executionsToday's ExecutionsARead-onlyIdempotentInspect
Get today's trade executions (fills). Returns executions[]{order_id, symbol, side, quantity, price, trade_done_at}. Pass symbol or order_id to filter.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol, e.g. "700.HK". | |
| order_id | No | Filter by a specific order_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the return structure (array of executions with fields) and filtering behavior, complementing the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a list of return fields, conveying all essential information without extraneous text. It is efficient and front-loads the key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no required parameters and a simple return type. The description adequately explains the output structure and filtering options. Minor gaps like behavior when no executions exist are not critical but could be added.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema (100% coverage). The description merely restates the filtering capability ('Pass symbol or order_id to filter'), adding no new semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'today's trade executions (fills)', specifying the scope (today). The return fields are listed, distinguishing it from sibling tools like history_executions and today_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use (today's executions) and informs filtering by symbol or order_id. However, it does not explicitly mention when not to use or point to alternative siblings like history_executions for other dates, though the name implies the scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
today_ordersToday's OrdersBRead-onlyIdempotentInspect
Get orders placed today. Returns orders[]{order_id, symbol, side, order_type, status, quantity, price, submitted_at, executed_quantity, executed_price}. Pass symbol to filter. US accounts only: us_action (Buy/Sell), us_page, us_limit filter/paginate via a separate US order endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol, e.g. "700.HK". Omit to return all today's orders. | |
| us_page | No | US accounts only: page number (default 1). | |
| us_limit | No | US accounts only: page size (default 20). | |
| us_action | No | US accounts only: filter by side, "Buy" or "Sell". Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds output structure but the confusing US account statement may mislead about actual behavior, reducing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Relatively concise with main purpose front-loaded. However, the confusing statement about US accounts wastes space and reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains output structure and symbol filtering, but lacks explanation of differentiation from 'today_executions'. The US account parameter ambiguity leaves gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds meaning for 'symbol' (filter) but says US account parameters should be used via a separate endpoint, contradicting their presence in the schema and creating confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get orders placed today' and lists return fields, distinguishing from siblings like 'today_executions' and 'history_orders'. However, the US accounts part introduces ambiguity about whether to use this tool or a separate endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for today's orders but does not explicitly state when not to use or mention alternatives. The confusing guidance on US accounts further detracts from clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topicTopic ListARead-onlyIdempotentInspect
Get discussion topics for a symbol. Returns items[]{id, title, author, created_at, like_count, comment_count, content_summary}.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive behavior. The description adds value by specifying the return structure (items array with fields), which goes beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded with the main action and immediately specifies the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate. It specifies the input and output fields, though it omits details like pagination or limits, which are not critical for this straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'symbol' is fully described in the schema (100% coverage). The description does not add further meaning, so 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get discussion topics for a symbol' with a specific verb and resource, and lists the returned fields. It distinguishes itself from sibling tools like topic_create, topic_detail, and topic_replies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as topic_detail or topic_replies. The description lacks context on when it is appropriate or not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_createCreate TopicAInspect
Create a new discussion topic. topic_type="post" (default) is plain text; "article" requires a non-empty title and accepts Markdown body.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Topic body. "post" type is plain text only; "article" type accepts Markdown. | |
| title | Yes | Topic title. Required when topic_type is "article", optional for "post". | |
| symbols | No | Related security symbols, e.g. ["700.HK", "TSLA.US"] (max 10). | |
| topic_type | No | Topic type: "post" (default, plain text) or "article" (Markdown, title required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly, non-destructive, open-world; description adds behavioral detail on topic_type and Markdown support, but no side effects or auth info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear front-loading; every word adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists; description covers core creation behavior. Lacks prerequisites or error handling, but adequate for moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds useful context like default topic_type and conditions for each type, enhancing clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool creates a new discussion topic, distinguishes between 'post' and 'article' types, and differentiates from sibling 'topic_create_reply'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives; only describes topic_type parameter behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_create_replyCreate Topic ReplyAInspect
Create a reply to a discussion topic. Pass reply_to_id to nest under another reply; omit for a top-level reply.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Reply body (plain text only). | |
| topic_id | Yes | Topic ID to reply to. | |
| reply_to_id | No | Optional parent reply ID for nested replies. Get IDs from `topic_replies`. Omit for a top-level reply. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| author | Yes | |
| images | Yes | |
| topic_id | Yes | |
| created_at | Yes | |
| likes_count | Yes | |
| reply_to_id | Yes | |
| comments_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only or destructive. The description adds no further behavioral details (e.g., auth requirements, duplicate handling). It is consistent with annotations, so a baseline score 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences with no unnecessary words. Front-loaded with the main action, followed by parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the simple nature of the tool, the description covers all necessary context: what it does, required parameters, and optional usage. Sibling tools are numerous but not relevant to completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the semantics of reply_to_id (nesting vs. top-level) beyond the schema description, which already references getting IDs from topic_replies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a reply to a discussion topic, distinguishing it from sibling tools like topic_create (creates topic) and topic_replies (lists replies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use the optional reply_to_id parameter for nesting, but does not explicitly state when to use this tool over alternatives. However, the context is clear for a reply creation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_detailTopic DetailBRead-onlyIdempotentInspect
Get discussion topic detail by topic_id.
| Name | Required | Description | Default |
|---|---|---|---|
| topic_id | Yes | Topic ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| title | Yes | |
| author | Yes | |
| images | Yes | |
| tickers | Yes | |
| hashtags | Yes | |
| created_at | Yes | |
| detail_url | Yes | |
| topic_type | Yes | |
| updated_at | Yes | |
| description | Yes | |
| likes_count | Yes | |
| views_count | Yes | |
| shares_count | Yes | |
| comments_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description is consistent with these annotations but adds no extra behavioral context such as error handling, response limitations, or auth requirements. With annotations present, this is adequate but not enriching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose and key parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup tool with one required parameter, an output schema, and strong annotations, the description is largely sufficient. It lacks any note about behavior for invalid/missing topic IDs or explicit relationship with sibling topic tools, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the only parameter topic_id is self-explanatory. The description's 'by topic_id' reinforces the parameter's role but adds no additional semantics, format constraints, or edge-case context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Get discussion topic detail by topic_id.' It names a specific verb and resource, making the purpose obvious. However, it does not explicitly differentiate from sibling tools like 'topic' or 'topic_replies', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'topic_search', 'topic_replies', or 'topic'. The description only states what the tool does without providing context, prerequisites, or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_repliesTopic RepliesARead-onlyIdempotentInspect
Get replies to a discussion topic, paginated (page default 1, size default 20, range 1-50)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based (default: 1). | |
| size | No | Records per page, 1-50 (default: 20). | |
| topic_id | Yes | Topic ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds pagination behavior with page/size defaults and the 1-50 range, but it does not disclose response contents, ordering, or behavior on invalid topic IDs. This is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that covers the resource, action, and key pagination constraints with no filler. Every part adds useful information and it is easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only list tool with fully described parameters and strong annotations, the description is nearly complete: it states what is fetched and how pagination works. It omits return-value shape and ordering, but those are not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so topic_id, page, and size are already fully documented in the schema. The description restates the pagination defaults and range but adds no new semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get replies to a discussion topic', naming a specific verb and resource. It clearly identifies this as a read-only listing operation for replies, distinct from topic detail or reply creation siblings. The pagination detail reinforces the scope even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear context: use this tool when you need to fetch replies for a discussion topic. It does not explicitly name alternatives or say when not to use it, but the read-only, resource-specific framing makes the primary use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_searchTopic SearchARead-onlyIdempotentInspect
Search community topics/posts by keyword. Returns id, author, time, and excerpt.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default: 20) | |
| keyword | Yes | Search keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat safety. It adds minimal behavioral context (return fields) but lacks details on pagination or ordering. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Front-loaded purpose followed by return details. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with annotations indicating safety and idempotency, the description covers the essentials (keyword search, return fields). However, it lacks details on result ordering and pagination beyond the limit parameter, which could be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'keyword' and 'limit' described. The description adds no additional parameter meaning beyond citing return fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search community topics/posts by keyword' with a specific verb and resource. It distinguishes from sibling tools like 'topic_detail' and 'topic_replies' by focusing on keyword search, and mentions return fields (id, author, time, excerpt).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for keyword search but provides no explicit guidance on when to use this tool versus alternatives such as 'topic_detail' or 'topic_replies'. No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_moversTop MoversBRead-onlyIdempotentInspect
Get stocks whose price fluctuation exceeds the 20-trading-day standard deviation, with correlated news reasons. markets: comma-separated HK/US/CN/SG (omit=all). sort: 0=time 1=change-magnitude 2=popularity/heat (default).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to query in "YYYY-MM-DD" format. Omit for today's movers. | |
| sort | No | Sort order (default: "2"): "0" = by time (most recent first) "1" = by price change magnitude (largest move first) "2" = by popularity (most-viewed first) | |
| limit | No | Number of events to return per page (default: 20, max: 100) | |
| markets | No | Market filter: comma-separated list of markets to include. Supported values: "HK", "US", "CN", "SG". Omit to return all markets. Example: "HK,US" | |
| next_params | No | Pagination cursor from previous response next_params field. Pass the entire next_params object returned by the previous call to get the next page. Omit for the first page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | No | |
| updated_at | No | |
| next_params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'correlated news reasons', which adds some behavioral detail beyond the readOnly annotation. However, it does not disclose pagination behavior (e.g., that next_params is used for paging), or any limitations or edge cases (e.g., how the standard deviation is computed, whether the list is sorted by default). Given the annotations already establish safety, the description adds modest but not comprehensive behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loads the core purpose. The second sentence listing parameters is somewhat redundant but not overly verbose. It is well-structured but could have been slightly more compact by omitting the redundant parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the key context (unusual price movement threshold) and notes the inclusion of news reasons, but it does not explain the output structure or mention the use of pagination. Given the schema is rich and output schema exists, the missing usage guidance and pagination explanation leave some gaps, but it is not severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description redundantly repeats the schema descriptions for 'markets' and 'sort' but omits any extra meaning for 'date', 'limit', and 'next_params'. It fails to clarify parameter interactions or defaults beyond what the schema already provides. Since the schema coverage is 100%, the description adds minimal semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving stocks with price fluctuations exceeding the 20-trading-day standard deviation, and also mentions that correlated news reasons are included. This is specific and distinct from typical list endpoints, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool compared to other market data tools, such as 'quotes', 'candlesticks', or 'rank_list'. It lacks context about scenarios (e.g., 'use this to identify unusual movers for news analysis') or prerequisites, leaving the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tradesRecent TradesARead-onlyIdempotentInspect
Get recent trades (max 1000). Returns trades[]{price, volume, timestamp, trade_type, direction} for the symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Maximum number of results (max 1000) | |
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the max 1000 constraint but otherwise does not significantly expand on behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with purpose, constraints, and return structure front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description enumerates return fields (price, volume, timestamp, trade_type, direction), providing necessary context. However, it omits explanations of field semantics or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description does not add new semantic information about the parameters 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent trades for a symbol, specifying the maximum count (1000) and the returned fields. It distinguishes from many sibling trading data tools by focusing on raw recent trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like trade_stats or history_executions. The description provides no context for selection among many similar data retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_statsTrade StatisticsARead-onlyIdempotentInspect
Get trade statistics (buy/sell/neutral volume distribution). Returns items[]{price_range, buy_volume, sell_volume, neutral_volume} for price-volume profile.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds context on return format but does not disclose additional behavioral traits beyond what annotations provide. With strong annotation coverage, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and then detail the return format. Every sentence adds value, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description fully covers what the tool does and what it returns. No additional context is needed for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single parameter 'symbol' with a clear description. Schema description coverage is 100%, so the description adds no further parameter detail beyond the schema, justifying a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('get trade statistics') and specifies the output fields (buy/sell/neutral volume distribution) with a clear structure. It differentiates from siblings like 'trades' by focusing on aggregated statistics rather than raw trade data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining volume distribution but does not explicitly state when to use this tool versus alternatives like 'trades' or other analytical tools. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trading_daysTrading DaysARead-onlyIdempotentInspect
Get trading days for a market between dates. market: HK/US/CN/SG.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date (yyyy-mm-dd) | |
| start | Yes | Start date (yyyy-mm-dd) | |
| market | Yes | Market code: HK, US, CN, SG |
Output Schema
| Name | Required | Description |
|---|---|---|
| trading_days | Yes | |
| half_trading_days | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, making the safety profile clear. The description adds no new behavioral context beyond what annotations provide, and does not contradict them. Score 3 is appropriate as description adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and scope. Every word is necessary; no redundancy or elaboration. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite simplicity, the tool is straightforward (3 required params, no nested objects) and annotation coverage is strong. Output schema exists to document return values. The description is sufficient for an agent to invoke correctly, though it could hint at the return format (e.g., list of dates).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all three parameters. The description merely repeats 'market: HK/US/CN/SG' which is already in the schema. No additional semantics or usage details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'trading days', and specifies the scope as markets (HK/US/CN/SG) and a date range. This uniquely identifies the tool among siblings like trading_session or market_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to get trading days) but does not provide explicit guidance on when not to use or alternatives. No exclusion or comparison with siblings like trading_session is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trading_sessionTrading SessionsARead-onlyIdempotentInspect
Get trading session schedule for all markets. Returns market_sessions[]{market, trade_sessions[]{beg_time, end_time, trade_session_type}}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, idempotent, and open-world. Description adds useful return structure (market_sessions nested arrays) and scope 'for all markets'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear structure: action, scope, and return format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, rich annotations, and no output schema, the description fully defines the tool's behavior and return shape. Sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, schema coverage 100%. Description provides meaning by listing return fields (market, beg_time, end_time, trade_session_type), compensating for missing output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get trading session schedule for all markets', with specific verb and resource. Distinguishes from sibling tools like market_status and trading_days.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use vs alternatives, but context is clear: call to retrieve all market sessions. No exclusions needed given zero parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_watchlist_groupUpdate Watchlist GroupADestructiveIdempotentInspect
Update a watchlist group by id. Can rename (name param) or modify securities (securities + mode: add/remove/replace).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Watchlist group id | |
| mode | No | Update mode for securities: "add", "remove", or "replace" (default: "replace") | |
| name | No | New group name (optional) | |
| securities | No | Securities list (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| updated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (not read-only, destructive). Adds context on specific modifications (add/remove/replace), which implies potential destructive behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core purpose, no redundant information. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema covers return values, the description sufficiently covers main use cases. Could mention prerequisites like ownership, but annotations provide destructive hint. Adequate for a 4-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining the combined usage of 'securities' and 'mode' params (add/remove/replace) and clarifying that 'name' is optional. This goes beyond basic schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Update' on 'watchlist group by id' and specifies the two modification types (rename or modify securities). Distinguishes from sibling tools like create_watchlist_group and delete_watchlist_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: rename via 'name' param, or modify securities using 'securities' and 'mode' params. Does not explicitly state when not to use, but the context of siblings implies this is for updates only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuationValuationARead-onlyIdempotentInspect
Get valuation overview with peer comparison. US accounts querying a .US symbol get a differently-shaped response not matching output_schema (ai_summary plus a metrics.pe object with different sub-fields); other combos match output_schema.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| range | No | |
| metrics | No | |
| indicator | No | |
| ai_summary | No | |
| ccy_symbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds critical transparency: for US accounts querying a .US symbol, the response shape differs from the output schema. This detail about output variability goes beyond what annotations provide, aiding correct interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences. The first sentence states the core purpose, and the second provides a crucial behavioral caveat. No superfluous words; information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set and the presence of an output schema, the description adequately covers the special output shape discrepancy. It does not need to explain standard return values. The mention of peer comparison adds context. Completeness is high for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'symbol' parameter. The description adds semantic value by linking the parameter value to a behavioral change: different response shapes for .US symbols. This informs the agent about a conditional effect of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a 'valuation overview with peer comparison', providing a specific verb and resource. It differentiates from siblings like 'valuation_comparison' by noting an output shape quirk for US .US symbols, but does not explicitly contrast with all sister tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining valuation with peer comparison and warns about a special case for US accounts with .US symbols. However, it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuation_comparisonStock ComparisonARead-onlyIdempotentInspect
Stock valuation comparison. Mode A (single): pass only symbol — server returns stock + auto-selected industry peers.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol to compare, e.g. "AAPL.US" | |
| currency | Yes | Currency: "USD" | "HKD" | "CNY" | |
| comparison_symbols | No | Comparison symbols, comma-separated, max 4, e.g. "MSFT.US,GOOGL.US". Note: pending backend support — currently server auto-selects industry peers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| list | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent. The description adds that the server auto-selects industry peers and that comparison_symbols is pending backend support. This 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. Efficiently communicates the core idea.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete: it only describes Mode A, ignoring Mode B with comparison_symbols. Given the tool has a pending parameter and two modes, the description should cover both for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. The description adds meaning by explaining that passing only symbol triggers auto-selection of peers, and notes pending support for comparison_symbols. This clarifies parameter behavior beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Stock valuation comparison' and specifies Mode A behavior (single symbol returns stock + peers). However, it omits Mode B involving comparison_symbols, which reduces clarity about full functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives minimal guidance on when to use this tool versus siblings like valuation or industry_valuation. It hints at two modes but doesn't explicitly state when to pass only symbol vs. comparison_symbols.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuation_historyValuation HistoryARead-onlyIdempotentInspect
Get detailed valuation history time series.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Security symbol, e.g. "700.HK" |
Output Schema
| Name | Required | Description |
|---|---|---|
| history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so the description adds minimal behavioral context. It says 'detailed' but does not elaborate on data frequency, pagination, or other 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description could hint at the types of valuation metrics included. However, given the schema and annotations, it is adequately complete for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning the schema fully documents the single parameter 'symbol'. The description adds no extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('valuation history time series'), clearly distinguishing it from siblings like 'valuation' (snapshot) and 'valuation_comparison' (comparison).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'valuation' or 'valuation_history'. The description lacks usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuation_rankValuation RankBRead-onlyIdempotentInspect
Get daily valuation rank (PE/PB/PS/dividend yield industry percentile) for a security over a date range. start/end in yyyymmdd format.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date in yyyymmdd format (default: today) | |
| start | No | Start date in yyyymmdd format (default: 30 days ago) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, which cover primary safety traits. The description adds that it returns daily valuation rank, but does not disclose error handling, data availability, or output structure. With annotations handling the main behavioral context, this is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: one stating purpose and metrics, the other specifying date format. No superfluous words. While efficient, it could be more structured (e.g., bullets) for quicker parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should hint at the response structure (e.g., date, rank, industry). It only mentions metrics but not the format or frequency. For a data retrieval tool with rich context from annotations and siblings, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description restates the date format 'yyyymmdd' already in the schema, adding minimal value. It does not explain the meaning of the rank output or parameter interactions. Baseline score of 3 applies due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves daily valuation rank (PE/PB/PS/dividend yield industry percentile) for a security over a date range. The verb 'Get' and specific metrics provide clarity, but it does not explicitly differentiate from sibling valuation tools like 'valuation_history' or 'industry_valuation'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining valuation rank percentile data over a date range, and specifies date format (yyyymmdd). However, it lacks explicit guidance on when to use this tool versus alternatives such as 'valuation_history' for actual values or 'industry_valuation' for aggregate industry metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warrant_issuersWarrant IssuersARead-onlyIdempotentInspect
Get HK warrant issuer information. Returns issuers[]{id, name_en, name_cn}. Use id in warrant_list issuer filter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds return structure context but does not significantly expand beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences conveying purpose, output structure, and usage hint with no wasted words. Front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no parameters and no output schema, the description adequately covers purpose and output usage. It does not cover ordering or authentication but these are not critical given the annotations and simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters, so schema coverage is 100%. Baseline 4 applies since description does not need to compensate for missing param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves HK warrant issuer information, returns a specific structure issuers[]{id, name_en, name_cn}, and distinguishes itself from siblings like warrant_list and warrant_quote by specifying usage in warrant_list issuer filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use the output id in warrant_list issuer filter, providing clear context for when to invoke this tool. It does not explicitly mention exclusions, but for a simple 0-param retrieval, it is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warrant_listWarrant ListARead-onlyIdempotentInspect
Get filtered warrant list for an underlying symbol. Returns warrants[]{symbol, name, last_done, change_rate, implied_volatility, expiry_date, strike_price, leverage_ratio, outstanding_ratio}.
| Name | Required | Description | Default |
|---|---|---|---|
| issuer | No | Filter by issuer ID (optional), use issuer_id from warrant_issuers tool | |
| status | No | Filter by status (optional): "Suspend" (suspended), "PrepareList" (pending listing), "Normal" (normal trading) | |
| symbol | Yes | Underlying symbol, e.g. "700.HK" | |
| sort_by | Yes | Sort field: LastDone, ChangeRate, ChangeValue, Volume, Turnover, ExpiryDate, StrikePrice, UpperStrikePrice, LowerStrikePrice, OutstandingQuantity, OutstandingRatio, Premium, ItmOtm, ImpliedVolatility, Delta | |
| price_type | No | Filter by in/out of bounds (optional): "In" (in bounds), "Out" (out of bounds). Only for Inline warrants. | |
| sort_order | Yes | Sort order: Ascending or Descending | |
| expiry_date | No | Filter by expiry date range (optional): "LT_3" (<3 months), "Between_3_6" (3-6 months), "Between_6_12" (6-12 months), "GT_12" (>12 months) | |
| warrant_type | No | Filter by warrant type (optional): "Call", "Put", "Bull", "Bear", "Inline" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds value by listing the exact fields returned (symbol, name, last_done, etc.), which is not in the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: one for purpose, one for return fields. No wasted words, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not mention pagination, limits, or behavior when no results found. However, with high schema coverage and clear return fields, it is minimally adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add additional meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a filtered warrant list for a given underlying symbol, with specific return fields listed. This distinguishes it from siblings like warrant_issuers or warrant_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., option_chain tools or warrant_issuers). The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warrant_quoteWarrant QuoteARead-onlyIdempotentInspect
Get warrant quotes. Returns last_done, prev_close, open, high, low, volume, turnover, implied_volatility, delta, leverage_ratio, effective_leverage per symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Security symbols, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds transparency by listing all returned fields, confirming no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: one stating the purpose and one listing the output fields. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple quote tool, the description fully covers inputs (symbols) and outputs (list of fields). No gaps are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter details. It already explains the 'symbols' parameter sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get warrant quotes' and lists the specific fields returned, distinguishing it from sibling tools like 'quote' (likely for stocks) and 'option_quote'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. While the name and description imply it is for warrant quotes, alternatives are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlistWatchlistARead-onlyIdempotentInspect
Get all watchlist groups and their securities. Returns groups[]{id, name, securities[]{symbol, market, name, watched_price, watched_at}}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, non-destructive, idempotent, and open-world hints. Description adds the return structure (groups with id, name, securities) but no additional behavioral traits like pagination or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently states purpose and return format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, comprehensive annotations, and no output schema, the description fully explains what the tool returns. It lists all fields in the response, making it complete for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Baseline for zero parameters is 4. Description does not need to add parameter info, but it does document the return structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Get all watchlist groups and their securities' with a clear verb and resource. It distinguishes from sibling tools like create_watchlist_group, delete_watchlist_group, and update_watchlist_group by being the read-only list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. However, the context of sibling tools (mutations for individual groups) implies this is for listing all groups, 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.
withdrawalsWithdrawalsARead-onlyIdempotentInspect
List withdrawal history for the current account. Returns items[]{id, amount, currency, status, created_at, bank_name, account_number (masked)}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, etc. Description adds the returned fields but not behavioral details like pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with verb upfront, followed by field list. No wasted words; front-loads purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with two simple parameters and no output schema, description covers what it returns. Missing a note on pagination behavior, but otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'list' and resource 'withdrawal history' for the current account, distinguishing it from sibling tools like 'deposits' which list deposits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies it's for viewing withdrawal history, but offers no alternatives or exclusions compared to other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Many tools have distinct purposes, but there is significant overlap in domains like financial reports (multiple tools for reports, snapshots, statements), candlesticks (three different candlestick tools), and DCA plans (nine tools). The detailed descriptions help but the sheer volume of closely related tools creates potential for misselection.
Tool names use a mix of bare nouns (e.g., 'watchlist', 'news'), compound nouns ('broker_holding'), and verb-noun pairs ('create_watchlist_group', 'cancel_order'). There is no uniform pattern, and some tools are variants like 'candlesticks', 'history_candlesticks_by_date', and 'history_candlesticks_by_offset' which are inconsistent in structure.
With 150 tools, the server is extremely large, covering trading, market data, financials, news, community, screener, and more. While comprehensive, this count is too high for efficient agent navigation and likely should be split into multiple specialized MCP servers. The typical MCP server has around 10-20 tools.
The tool surface covers a wide range of broker/investment operations: orders, account, market data, options, IPOs, DCA, financial reports, news, screener, and more. Minor gaps exist, such as lacking tools to initiate transfers, modify account settings, or handle margin lending, but overall it is highly comprehensive for a trading platform.
Maintenance
Related MCP Connectors
Live US options chains with Greeks and IV, a screener, SQL, and FMP fundamentals.
Live market data, financial analysis, and portfolio research tools across 10,000+ tickers.
Live market data & technical analysis for US stocks, ETFs and crypto. Read-only, no signup.
Real-time market data, screeners, technical analysis & backtesting for stocks, crypto and forex.
Related MCP Servers
- FlicenseDqualityCmaintenanceProvides real-time stock data and AI-powered analysis for A-shares, Hong Kong stocks, and US stocks. Features sentiment analysis of financial news, deep research reports, and comprehensive market data through multiple integrated data sources.22173
- AlicenseCqualityCmaintenanceEnables financial research and analysis through AI agents that combine web search, content crawling, entity extraction, and deep research workflows. Supports extracting stock/fund entities with security codes and conducting structured financial investigations.924Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides comprehensive stock market data across US, Hong Kong, and Chinese markets, combining real-time quotes, historical data, fundamentals, and financial statements from multiple sources including Yahoo Finance, Finnhub, Tushare, and Futu OpenAPI.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/longbridge/longbridge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server