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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v0.10.2- Changed
cancel_order2 fields changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS\nSENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed that exact order. The code is single use,\nexpires in 10 minutes, and applies only to this exact order — change any\nfield and it stops working. Never quote it back on your own initiative,\nand never in the same turn the user first asks.", + "type": "string" +} - changed
Input schema / properties / order_id / descriptionPrevious value: -"Order ID (from today's orders or order history)"New value: +"Order ID to cancel (from today's orders or order history)"
- Changed
finance_calendar5 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"End date in YYYY-MM-DD format (inclusive)"New value: +"End date in YYYY-MM-DD format (inclusive). Defaults to 7 days after `start`." - changed
Input schema / properties / start / descriptionPrevious value: -"Start date in YYYY-MM-DD format (inclusive)"New value: +"Start date in YYYY-MM-DD format (inclusive). Defaults to today (UTC)." - changed
Input schema / requiredPrevious value: -[ - "category", - "start", - "end" -]New value: +[ + "category" +] - added
Output schema / properties / partialAdded value: +{ + "type": [ + "boolean", + "null" + ] +} - added
Output schema / properties / partial_reasonAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
grid_cancel1 field changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING\nIS SENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed it. The code is single use, expires in 10\nminutes, and applies only to this exact request — change any field and\nit stops working. A grid strategy keeps placing orders on its own once\nlive, so never quote the code back on your own initiative.", + "type": "string" +}
- Changed
grid_replace1 field changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING\nIS SENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed it. The code is single use, expires in 10\nminutes, and applies only to this exact request — change any field and\nit stops working. A grid strategy keeps placing orders on its own once\nlive, so never quote the code back on your own initiative.", + "type": "string" +}
- Changed
grid_restart1 field changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING\nIS SENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed it. The code is single use, expires in 10\nminutes, and applies only to this exact request — change any field and\nit stops working. A grid strategy keeps placing orders on its own once\nlive, so never quote the code back on your own initiative.", + "type": "string" +}
- Changed
grid_submit6 fields changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING\nIS SENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed it. The code is single use, expires in 10\nminutes, and applies only to this exact request — change any field and\nit stops working. A grid strategy keeps placing orders on its own once\nlive, so never quote the code back on your own initiative.", + "type": "string" +} - added
Output schema / properties / dry_runAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / next_stepAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / order_id / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Output schema / properties / previewAdded value: +{} - changed
Output schema / requiredPrevious value: -[ - "order_id" -]New value: +[ + "dry_run" +]
- Changed
grid_suspend1 field changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this request's dry run. WITHOUT IT NOTHING\nIS SENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed it. The code is single use, expires in 10\nminutes, and applies only to this exact request — change any field and\nit stops working. A grid strategy keeps placing orders on its own once\nlive, so never quote the code back on your own initiative.", + "type": "string" +}
- Changed
history_candlesticks_by_date7 fields changed- added
Input schema / properties / forward_adjust / defaultAdded value: +false - changed
Input schema / properties / forward_adjust / descriptionPrevious value: -"Whether to forward-adjust for splits/dividends"New value: +"Whether to forward-adjust for splits/dividends (default: false / no adjust)" - added
Input schema / properties / period / defaultAdded value: +"day" - changed
Input schema / properties / period / descriptionPrevious value: -"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year"New value: +"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day)" - added
Input schema / properties / trade_sessions / defaultAdded value: +"all" - changed
Input schema / properties / trade_sessions / descriptionPrevious value: -"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market)"New value: +"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market; default \"all\")" - changed
Input schema / requiredPrevious value: -[ - "symbol", - "period", - "forward_adjust", - "trade_sessions" -]New value: +[ + "symbol" +]
- Changed
history_candlesticks_by_offset11 fields changed- added
Input schema / properties / count / defaultAdded value: +100 - changed
Input schema / properties / count / descriptionPrevious value: -"Number of candlesticks (max 1000)"New value: +"Number of candlesticks (optional, max 1000; default 100)" - added
Input schema / properties / forward / defaultAdded value: +false - changed
Input schema / properties / forward / descriptionPrevious value: -"Whether to query forward in time (true) or backward (false)"New value: +"Whether to query forward in time (true) or backward (false; default)" - added
Input schema / properties / forward_adjust / defaultAdded value: +false - changed
Input schema / properties / forward_adjust / descriptionPrevious value: -"Whether to forward-adjust for splits/dividends"New value: +"Whether to forward-adjust for splits/dividends (default: false / no adjust)" - added
Input schema / properties / period / defaultAdded value: +"day" - changed
Input schema / properties / period / descriptionPrevious value: -"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year"New value: +"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day)" - added
Input schema / properties / trade_sessions / defaultAdded value: +"all" - changed
Input schema / properties / trade_sessions / descriptionPrevious value: -"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market)"New value: +"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market; default \"all\")" - changed
Input schema / requiredPrevious value: -[ - "symbol", - "period", - "forward_adjust", - "forward", - "count", - "trade_sessions" -]New value: +[ + "symbol" +]
- Changed
institution_rating1 field changed- added
Output schema / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] +}
- Changed
replace_order1 field changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS\nSENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed that exact order. The code is single use,\nexpires in 10 minutes, and applies only to this exact order — change any\nfield and it stops working. Never quote it back on your own initiative,\nand never in the same turn the user first asks.", + "type": "string" +}
- Changed
stock_positions1 field changed- added
Output schema / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] +}
- Changed
submit_order6 fields changed- added
Input schema / properties / executeAdded value: +{ + "description": "The `confirmation_code` from this order's dry run. WITHOUT IT NOTHING IS\nSENT.\n\nOmitted (the default) makes this a DRY RUN: the request is validated and\nechoed back with a three-digit `confirmation_code`, and nothing reaches\nthe exchange.\n\nRequired protocol: call once without `execute`, show the returned\npreview to the user, and call again quoting the code only after the user\nhas explicitly confirmed that exact order. The code is single use,\nexpires in 10 minutes, and applies only to this exact order — change any\nfield and it stops working. Never quote it back on your own initiative,\nand never in the same turn the user first asks.", + "type": "string" +} - added
Output schema / properties / dry_runAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / next_stepAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / order_id / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Output schema / properties / previewAdded value: +{} - changed
Output schema / requiredPrevious value: -[ - "order_id" -]New value: +[ + "dry_run" +]
5 tool updates
v0.10.0- Added
security_facts - Added
signal_detail - Added
signals - Changed
statement_list2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -null - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of records to return. Defaults to 30 for \"daily\" or 12 for \"monthly\"."New value: +"Number of records to return. Defaults to 30 for \"daily\" or 12 for \"monthly\".\n\nThe default depends on `statement_type`, so the schema declares none:\n`skip_serializing_if` is what stops schemars deriving `default: null`\nfrom `serde(default)`, which would contradict the integer type."
- Changed
topic_replies2 fields changed- changed
Input schema / properties / page / defaultPrevious value: -nullNew value: +1 - changed
Input schema / properties / size / defaultPrevious value: -nullNew value: +20
30 tool updates
v0.8.7- Changed
cancel_order1 field changed- changed
Input schema / properties / order_id / descriptionPrevious value: -"Order ID (returned by submit_order or listed in today_orders / history_orders)"New value: +"Order ID (from today's orders or order history)"
- Changed
company1 field changed- added
Output schema / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
corp_action1 field changed- added
Output schema / $defs / CorpActionItem / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
executive1 field changed- added
Output schema / $defs / ExecutiveMember / properties / titleAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Added
grid_cancel - Added
grid_detail - Added
grid_list - Added
grid_list_by_ids - Added
grid_questionnaire - Added
grid_replace - Added
grid_restart - Added
grid_submit - Added
grid_suspend - Added
grid_symbol_info - Added
grid_trigger_history - Changed
history_market_temperature1 field changed- added
Output schema / $defs / MarketTemperatureResponse / properties / descriptionAdded value: +{ + "type": "string" +}
- Changed
invest_relation2 fields changed- added
Output schema / $defs / InvestRelationItem / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / $defs / InvestRelationItem / properties / titleAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
market_temperature1 field changed- added
Output schema / properties / descriptionAdded value: +{ + "type": "string" +}
- Added
news_detail - Changed
order_detail1 field changed- changed
Input schema / properties / order_id / descriptionPrevious value: -"Order ID (returned by submit_order or listed in today_orders / history_orders)"New value: +"Order ID (from today's orders or order history)"
- Changed
screener_recommend_strategies1 field changed- added
Output schema / $defs / ScreenerStrategyItem / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
screener_search2 fields changed- changed
Input schema / properties / conditions / descriptionPrevious value: -"Mode B — Filter conditions as objects, passed directly to the API.\nEach item: {\"key\": \"KEY\", \"min\": \"10\", \"max\": \"50\", \"tech_values\": {}}\nThe \"filter_\" prefix is added automatically to the key if missing.\n\nFundamental keys (pass with or without filter_ prefix):\n pettm pbmrq roe roa netmargin\n salesgrowthyoy netincomegrowthyoy marketcap(亿)\n circulating_marketcap(亿) prevclose prevchg(%)\n divyld la epsttm netincome(亿) sales(亿) turnover_rate balance(万)\n\nTechnical indicator keys (tech_values required; call screener_indicators for schema):\n macd_day/week → {\"category\":\"goldenfork\"|\"deadcross\",\"period\":\"day\"|\"week\"}\n rsi_day/week → {\"value_type\":\"overbought\"|\"oversold\"}\n kdj_day/week → {\"category\":\"goldenfork\"|\"deadcross\"}\n boll_day/week → {\"category\":\"breakthrough_up\"|\"breakthrough_down\"}"New value: +"Mode B — Filter conditions, passed directly to the API. Omit for Mode A.\n\nFundamental keys (pass with or without filter_ prefix):\n pettm pbmrq roe roa netmargin\n salesgrowthyoy netincomegrowthyoy marketcap(亿)\n circulating_marketcap(亿) prevclose prevchg(%)\n divyld la epsttm netincome(亿) sales(亿) turnover_rate balance(万)\n\nTechnical indicator keys (tech_values required; call screener_indicators for schema):\n macd_day/week → {\"category\":\"goldenfork\"|\"deadcross\",\"period\":\"day\"|\"week\"}\n rsi_day/week → {\"value_type\":\"overbought\"|\"oversold\"}\n kdj_day/week → {\"category\":\"goldenfork\"|\"deadcross\"}\n boll_day/week → {\"category\":\"breakthrough_up\"|\"breakthrough_down\"}" - changed
Input schema / properties / conditions / itemsPrevious value: -trueNew value: +{ + "properties": { + "key": { + "description": "Indicator key; the \"filter_\" prefix is added automatically if missing.\nFundamental: pettm, pbmrq, roe, roa, netmargin, salesgrowthyoy, netincomegrowthyoy, marketcap, circulating_marketcap, prevclose, prevchg, divyld, la, epsttm, netincome, sales, turnover_rate, balance.\nTechnical: macd_day, macd_week, rsi_day, rsi_week, kdj_day, kdj_week, boll_day, boll_week.", + "type": "string" + }, + "max": { + "description": "Upper bound as a numeric string, e.g. \"50\". Pass an empty string when unbounded or for technical keys.", + "type": "string" + }, + "min": { + "description": "Lower bound as a numeric string, e.g. \"10\". Pass an empty string when unbounded or for technical keys.", + "type": "string" + }, + "tech_values": { + "description": "Technical-indicator params as a JSON string (empty string for fundamental keys):\nmacd_day/week: {\"category\":\"goldenfork\"|\"deadcross\",\"period\":\"day\"|\"week\"}\nrsi_day/week: {\"value_type\":\"overbought\"|\"oversold\"}\nkdj_day/week: {\"category\":\"goldenfork\"|\"deadcross\"}\nboll_day/week: {\"category\":\"breakthrough_up\"|\"breakthrough_down\"}", + "type": "string" + } + }, + "required": [ + "key" + ], + "type": "object" +}
- Changed
screener_user_strategies1 field changed- added
Output schema / $defs / ScreenerStrategyItem / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
shareholder_top1 field changed- added
Output schema / $defs / ShareholderTopHolder / properties / titleAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
sharelist_create1 field changed- added
Output schema / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
sharelist_detail1 field changed- added
Output schema / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
sharelist_list1 field changed- added
Output schema / $defs / SharelistSummary / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
sharelist_popular1 field changed- added
Output schema / $defs / SharelistSummary / properties / descriptionAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
top_movers3 fields changed- removed
Input schema / properties / next_params / additionalPropertiesRemoved value: -true - added
Input schema / properties / next_params / properties / visitedAdded value: +{ + "description": "Event IDs already seen in previous pages. Pass back verbatim from the previous response — do not fabricate.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / next_params / requiredAdded value: +[ + "visited" +]
- Changed
topic_detail2 fields changed- added
Output schema / properties / descriptionAdded value: +{ + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +}
14 tool updates
v0.8.4- Changed
company5 fields changed- added
Output schema / properties / ccy_symbolAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / detail_urlAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / introAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / share_listAdded value: +{ + "items": true, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / top_rank_tagsAdded value: +{ + "items": true, + "type": [ + "array", + "null" + ] +}
- Changed
consensus7 fields changed- added
Output schema / $defs / UsConsensusEstimateAdded value: +{ + "properties": { + "actual": { + "type": [ + "string", + "null" + ] + }, + "estimate": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsConsensusPeriodAdded value: +{ + "properties": { + "ebit": { + "anyOf": [ + { + "$ref": "#/$defs/UsConsensusEstimate" + }, + { + "type": "null" + } + ] + }, + "eps": { + "anyOf": [ + { + "$ref": "#/$defs/UsConsensusEstimate" + }, + { + "type": "null" + } + ] + }, + "fiscal_year": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "report_txt": { + "type": [ + "string", + "null" + ] + }, + "revenue": { + "anyOf": [ + { + "$ref": "#/$defs/UsConsensusEstimate" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" +} - added
Output schema / properties / ai_summaryAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / currencyAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / listAdded value: +{ + "items": { + "$ref": "#/$defs/UsConsensusPeriod" + }, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / opt_reportsAdded value: +{ + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / reportAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
dividend7 fields changed- added
Output schema / $defs / UsDividendHistoryYearAdded value: +{ + "properties": { + "currency": { + "type": [ + "string", + "null" + ] + }, + "dividend": { + "type": [ + "string", + "null" + ] + }, + "dividend_growth_rate": { + "type": [ + "string", + "null" + ] + }, + "dividend_payout_ratio": { + "type": [ + "string", + "null" + ] + }, + "dividend_to_cashflow_ratio": { + "type": [ + "string", + "null" + ] + }, + "dividend_yield": { + "format": "double", + "type": [ + "number", + "null" + ] + }, + "fiscal_year": { + "type": [ + "string", + "null" + ] + }, + "fiscal_year_range": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsDividendPayoutAdded value: +{ + "properties": { + "currency": { + "type": [ + "string", + "null" + ] + }, + "dividend": { + "type": [ + "string", + "null" + ] + }, + "dividend_type": { + "type": [ + "string", + "null" + ] + }, + "ex_date": { + "type": [ + "string", + "null" + ] + }, + "payment_date": { + "type": [ + "string", + "null" + ] + }, + "record_date": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsRecentDividendsAdded value: +{ + "properties": { + "currency": { + "type": [ + "string", + "null" + ] + }, + "dividend_ttm": { + "type": [ + "string", + "null" + ] + }, + "dividend_yield_ttm": { + "format": "double", + "type": [ + "number", + "null" + ] + }, + "payouts": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / properties / dividend_historyAdded value: +{ + "items": { + "$ref": "#/$defs/UsDividendHistoryYear" + }, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / dividend_payout_historyAdded value: +{ + "items": { + "$ref": "#/$defs/UsDividendPayout" + }, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / payout_ratiosAdded value: +{ + "items": { + "$ref": "#/$defs/UsDividendHistoryYear" + }, + "type": [ + "array", + "null" + ] +} - added
Output schema / properties / recent_dividendsAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/UsRecentDividends" + }, + { + "type": "null" + } + ] +}
- Added
etf_docs - Changed
financial_report1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "FinancialReportBalancePeriod": { + "properties": { + "debt_assets_ratio": { + "type": [ + "string", + "null" + ] + }, + "report": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialReportPeriodMeta" + }, + { + "type": "null" + } + ] + }, + "total_assets": { + "type": [ + "string", + "null" + ] + }, + "total_liabilities": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialReportCashFlowPeriod": { + "properties": { + "financing": { + "type": [ + "string", + "null" + ] + }, + "investing": { + "type": [ + "string", + "null" + ] + }, + "operating": { + "type": [ + "string", + "null" + ] + }, + "report": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialReportPeriodMeta" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "FinancialReportField": { + "properties": { + "display_order": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "field": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "level": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "value": { + "type": [ + "string", + "null" + ] + }, + "value_type": { + "type": [ + "string", + "null" + ] + }, + "yoy": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialReportIncomePeriod": { + "properties": { + "net_income": { + "type": [ + "string", + "null" + ] + }, + "net_margin": { + "type": [ + "string", + "null" + ] + }, + "report": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialReportPeriodMeta" + }, + { + "type": "null" + } + ] + }, + "revenue": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialReportPeriodMeta": { + "properties": { + "end_date": { + "type": [ + "string", + "null" + ] + }, + "report_txt": { + "type": [ + "string", + "null" + ] + }, + "start_date": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialStatementPeriod": { + "properties": { + "ff_period": { + "type": [ + "string", + "null" + ] + }, + "ff_year": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "fields": { + "items": { + "$ref": "#/$defs/FinancialReportField" + }, + "type": [ + "array", + "null" + ] + }, + "fp_end": { + "type": [ + "string", + "null" + ] + }, + "report_txt": { + "type": [ + "string", + "null" + ] + }, + "rpt_date": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "properties": { + "bs_list": { + "items": { + "$ref": "#/$defs/FinancialReportBalancePeriod" + }, + "type": [ + "array", + "null" + ] + }, + "ccy_symbol": { + "type": [ + "string", + "null" + ] + }, + "cf_list": { + "items": { + "$ref": "#/$defs/FinancialReportCashFlowPeriod" + }, + "type": [ + "array", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "empty_fields": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "is_list": { + "items": { + "$ref": "#/$defs/FinancialReportIncomePeriod" + }, + "type": [ + "array", + "null" + ] + }, + "list": { + "items": { + "$ref": "#/$defs/FinancialStatementPeriod" + }, + "type": [ + "array", + "null" + ] + }, + "report": { + "type": [ + "string", + "null" + ] + }, + "report_type": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
- Added
financial_report_key_metrics - Changed
financial_statement1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "FinancialReportField": { + "properties": { + "display_order": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "field": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "level": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "value": { + "type": [ + "string", + "null" + ] + }, + "value_type": { + "type": [ + "string", + "null" + ] + }, + "yoy": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialStatementKind": { + "properties": { + "currency": { + "type": [ + "string", + "null" + ] + }, + "empty_fields": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "list": { + "items": { + "$ref": "#/$defs/FinancialStatementPeriod" + }, + "type": [ + "array", + "null" + ] + }, + "report": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "FinancialStatementPeriod": { + "properties": { + "ff_period": { + "type": [ + "string", + "null" + ] + }, + "ff_year": { + "format": "int32", + "type": [ + "integer", + "null" + ] + }, + "fields": { + "items": { + "$ref": "#/$defs/FinancialReportField" + }, + "type": [ + "array", + "null" + ] + }, + "fp_end": { + "type": [ + "string", + "null" + ] + }, + "report_txt": { + "type": [ + "string", + "null" + ] + }, + "rpt_date": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "properties": { + "balance_sheet": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialStatementKind" + }, + { + "type": "null" + } + ] + }, + "cash_flow": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialStatementKind" + }, + { + "type": "null" + } + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "empty_fields": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "income_statement": { + "anyOf": [ + { + "$ref": "#/$defs/FinancialStatementKind" + }, + { + "type": "null" + } + ] + }, + "list": { + "items": { + "$ref": "#/$defs/FinancialStatementPeriod" + }, + "type": [ + "array", + "null" + ] + }, + "report": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
- Changed
history_executions2 fields changed- added
Input schema / properties / us_limitAdded value: +{ + "description": "US accounts only, history_orders tool only: page size (default 20).", + "format": "int32", + "type": "integer" +} - added
Input schema / properties / us_pageAdded value: +{ + "description": "US accounts only, history_orders tool only: page number (default 1).", + "format": "int32", + "type": "integer" +}
- Changed
history_orders2 fields changed- added
Input schema / properties / us_limitAdded value: +{ + "description": "US accounts only, history_orders tool only: page size (default 20).", + "format": "int32", + "type": "integer" +} - added
Input schema / properties / us_pageAdded value: +{ + "description": "US accounts only, history_orders tool only: page number (default 1).", + "format": "int32", + "type": "integer" +}
- Changed
order_detail17 fields changed- added
Output schema / $defsAdded value: +{ + "UsOrderDetail": { + "properties": { + "action": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "done_at": { + "type": [ + "string", + "null" + ] + }, + "executed_amount": { + "type": [ + "string", + "null" + ] + }, + "executed_price": { + "type": [ + "string", + "null" + ] + }, + "executed_qty": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "operate_direction": { + "type": [ + "string", + "null" + ] + }, + "order_histories": { + "items": { + "$ref": "#/$defs/UsOrderHistoryEntry" + }, + "type": [ + "array", + "null" + ] + }, + "order_type": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "quantity": { + "type": [ + "string", + "null" + ] + }, + "security_type": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "submitted_at": { + "type": [ + "string", + "null" + ] + }, + "symbol": { + "type": [ + "string", + "null" + ] + }, + "time_in_force": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "UsOrderHistoryEntry": { + "properties": { + "occurred_at": { + "type": [ + "string", + "null" + ] + }, + "price": { + "type": [ + "string", + "null" + ] + }, + "qty": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +} - changed
Output schema / properties / currency / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Output schema / properties / current_millisecondAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / executed_quantity / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / msg / typePrevious value: -"string"New value: +[ + "string", + "null" +] - added
Output schema / properties / orderAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/UsOrderDetail" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / order_id / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / order_type / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / quantity / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / side / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / status / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / stock_name / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / submitted_at / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / symbol / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / tag / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / time_in_force / typePrevious value: -"string"New value: +[ + "string", + "null" +] - removed
Output schema / requiredRemoved value: -[ - "order_id", - "status", - "symbol", - "stock_name", - "quantity", - "executed_quantity", - "submitted_at", - "side", - "order_type", - "msg", - "tag", - "time_in_force", - "currency" -]
- Added
profit_analysis_realized - Changed
stock_positions6 fields changed- added
Output schema / $defs / UsAssetOverviewAdded value: +{ + "properties": { + "account_type": { + "type": [ + "string", + "null" + ] + }, + "cash_buy_power": { + "type": [ + "string", + "null" + ] + }, + "cash_list": { + "items": { + "$ref": "#/$defs/UsCashPosition" + }, + "type": [ + "array", + "null" + ] + }, + "crypto_list": { + "items": { + "$ref": "#/$defs/UsCryptoPosition" + }, + "type": [ + "array", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "multi_leg": {}, + "option_list": { + "items": { + "$ref": "#/$defs/UsOptionPosition" + }, + "type": [ + "array", + "null" + ] + }, + "overnight_buy_power": { + "type": [ + "string", + "null" + ] + }, + "stock_list": { + "items": { + "$ref": "#/$defs/UsStockPosition" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsCashPositionAdded value: +{ + "properties": { + "currency": { + "type": [ + "string", + "null" + ] + }, + "frozen_buy_cash": { + "type": [ + "string", + "null" + ] + }, + "outstanding": { + "type": [ + "string", + "null" + ] + }, + "settled_cash": { + "type": [ + "string", + "null" + ] + }, + "total_amount": { + "type": [ + "string", + "null" + ] + }, + "total_cash": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsCryptoPositionAdded value: +{ + "properties": { + "average_cost": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "symbol": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsOptionPositionAdded value: +{ + "properties": { + "average_cost": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "due_date": { + "type": [ + "string", + "null" + ] + }, + "market_price": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "position_side": { + "type": [ + "string", + "null" + ] + }, + "quantity": { + "type": [ + "string", + "null" + ] + }, + "strike_price": { + "type": [ + "string", + "null" + ] + }, + "symbol": { + "type": [ + "string", + "null" + ] + }, + "today_pl": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": [ + "string", + "null" + ] + }, + "underlying_code": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / $defs / UsStockPositionAdded value: +{ + "properties": { + "average_cost": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "industry_name": { + "type": [ + "string", + "null" + ] + }, + "last_done": { + "type": [ + "string", + "null" + ] + }, + "market": { + "type": [ + "string", + "null" + ] + }, + "market_price": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "position_side": { + "type": [ + "string", + "null" + ] + }, + "prev_close": { + "type": [ + "string", + "null" + ] + }, + "quantity": { + "type": [ + "string", + "null" + ] + }, + "symbol": { + "type": [ + "string", + "null" + ] + }, + "today_pl": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +} - added
Output schema / properties / us_asset_overviewAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/UsAssetOverview" + }, + { + "type": "null" + } + ] +}
- Changed
today_orders3 fields changed- added
Input schema / properties / us_actionAdded value: +{ + "description": "US accounts only: filter by side, \"Buy\" or \"Sell\". Omit for all.", + "type": "string" +} - added
Input schema / properties / us_limitAdded value: +{ + "description": "US accounts only: page size (default 20).", + "format": "int32", + "type": "integer" +} - added
Input schema / properties / us_pageAdded value: +{ + "description": "US accounts only: page number (default 1).", + "format": "int32", + "type": "integer" +}
- Changed
valuation8 fields changed- added
Output schema / $defs / ValuationMetric / properties / descAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / $defs / ValuationMetric / properties / industry_medianAdded value: +{ + "format": "double", + "type": [ + "number", + "null" + ] +} - added
Output schema / $defs / ValuationMetric / properties / metricAdded value: +{ + "format": "double", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / ai_summaryAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / ccy_symbolAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / dateAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / indicatorAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / rangeAdded value: +{ + "format": "int32", + "type": [ + "integer", + "null" + ] +}
2 tool updates
v0.7.4- Changed
macrodata1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "MacroeconomicDataPoint": { + "properties": { + "actual_value": { + "type": "string" + }, + "forecast_value": { + "type": "string" + }, + "period": { + "type": "string" + }, + "previous_value": { + "type": "string" + }, + "release_at": { + "type": [ + "string", + "null" + ] + }, + "unit": { + "type": "string" + } + }, + "required": [ + "period", + "actual_value", + "previous_value", + "forecast_value", + "unit" + ], + "type": "object" + }, + "MacroeconomicIndicator": { + "properties": { + "country": { + "type": "string" + }, + "describe": { + "type": "string" + }, + "importance": { + "format": "int32", + "type": "integer" + }, + "indicator_code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "periodicity": { + "type": "string" + } + }, + "required": [ + "indicator_code", + "country", + "name", + "describe", + "periodicity", + "importance" + ], + "type": "object" + } + }, + "properties": { + "count": { + "format": "int32", + "type": "integer" + }, + "data": { + "items": { + "$ref": "#/$defs/MacroeconomicDataPoint" + }, + "type": "array" + }, + "info": { + "$ref": "#/$defs/MacroeconomicIndicator" + } + }, + "required": [ + "info", + "data", + "count" + ], + "type": "object" +}
- Changed
macrodata_indicators1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "MacroeconomicIndicator": { + "properties": { + "country": { + "type": "string" + }, + "describe": { + "type": "string" + }, + "importance": { + "format": "int32", + "type": "integer" + }, + "indicator_code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "periodicity": { + "type": "string" + } + }, + "required": [ + "indicator_code", + "country", + "name", + "describe", + "periodicity", + "importance" + ], + "type": "object" + } + }, + "properties": { + "count": { + "format": "int32", + "type": "integer" + }, + "list": { + "items": { + "$ref": "#/$defs/MacroeconomicIndicator" + }, + "type": "array" + } + }, + "required": [ + "list", + "count" + ], + "type": "object" +}
132 tool updates
v0.7.1- Changed
account_balance1 field changed- removed
Input schema / titleRemoved value: -"AccountBalanceParam"
- Changed
ah_premium1 field changed- removed
Input schema / titleRemoved value: -"AhPremiumParam"
- Changed
ah_premium_intraday1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
alert_add1 field changed- removed
Input schema / titleRemoved value: -"AlertAddParam"
- Changed
alert_delete1 field changed- removed
Input schema / titleRemoved value: -"AlertIdParam"
- Changed
alert_disable1 field changed- removed
Input schema / titleRemoved value: -"AlertIdParam"
- Changed
alert_enable1 field changed- removed
Input schema / titleRemoved value: -"AlertIdParam"
- Changed
anomaly1 field changed- removed
Input schema / titleRemoved value: -"AnomalyParam"
- Changed
broker_holding1 field changed- removed
Input schema / titleRemoved value: -"BrokerHoldingParam"
- Changed
broker_holding_daily1 field changed- removed
Input schema / titleRemoved value: -"BrokerHoldingDailyParam"
- Changed
broker_holding_detail1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
brokers1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
business_segments1 field changed- removed
Input schema / titleRemoved value: -"BusinessSegmentsParam"
- Changed
business_segments_history1 field changed- removed
Input schema / titleRemoved value: -"BusinessSegmentsHistoryParam"
- Changed
calc_indexes1 field changed- removed
Input schema / titleRemoved value: -"CalcIndexesParam"
- Changed
cancel_order1 field changed- removed
Input schema / titleRemoved value: -"OrderIdParam"
- Changed
candlesticks1 field changed- removed
Input schema / titleRemoved value: -"CandlesticksParam"
- Changed
capital_distribution1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
capital_flow1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
cash_flow1 field changed- removed
Input schema / titleRemoved value: -"CashFlowParam"
- Changed
company1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
consensus1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
constituent1 field changed- removed
Input schema / titleRemoved value: -"IndexSymbolParam"
- Changed
corp_action1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
create_watchlist_group1 field changed- removed
Input schema / titleRemoved value: -"CreateWatchlistGroupParam"
- Changed
dca_check1 field changed- removed
Input schema / titleRemoved value: -"DcaCheckParam"
- Changed
dca_create1 field changed- removed
Input schema / titleRemoved value: -"DcaCreateParam"
- Changed
dca_history1 field changed- removed
Input schema / titleRemoved value: -"DcaHistoryParam"
- Changed
dca_list1 field changed- removed
Input schema / titleRemoved value: -"DcaListParam"
- Changed
dca_pause1 field changed- removed
Input schema / titleRemoved value: -"DcaPlanIdParam"
- Changed
dca_resume1 field changed- removed
Input schema / titleRemoved value: -"DcaPlanIdParam"
- Changed
dca_stats1 field changed- removed
Input schema / titleRemoved value: -"DcaStatsParam"
- Changed
dca_stop1 field changed- removed
Input schema / titleRemoved value: -"DcaPlanIdParam"
- Changed
dca_update1 field changed- removed
Input schema / titleRemoved value: -"DcaUpdateParam"
- Changed
delete_watchlist_group1 field changed- removed
Input schema / titleRemoved value: -"DeleteWatchlistGroupParam"
- Changed
deposits1 field changed- removed
Input schema / titleRemoved value: -"DepositParam"
- Changed
depth1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
dividend1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
dividend_detail1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
estimate_max_purchase_quantity1 field changed- removed
Input schema / titleRemoved value: -"EstimateMaxQtyParam"
- Changed
executive1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
filings1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
finance_calendar1 field changed- removed
Input schema / titleRemoved value: -"FinanceCalendarParam"
- Changed
financial_report1 field changed- removed
Input schema / titleRemoved value: -"FinancialReportParam"
- Changed
financial_report_latest1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
financial_report_snapshot1 field changed- removed
Input schema / titleRemoved value: -"FinancialReportSnapshotParam"
- Changed
financial_statement1 field changed- removed
Input schema / titleRemoved value: -"FinancialStatementParam"
- Changed
forecast_eps1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
fund_holder1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
history_candlesticks_by_date1 field changed- removed
Input schema / titleRemoved value: -"HistoryCandlesticksByDateParam"
- Changed
history_candlesticks_by_offset1 field changed- removed
Input schema / titleRemoved value: -"HistoryCandlesticksByOffsetParam"
- Changed
history_executions1 field changed- removed
Input schema / titleRemoved value: -"HistoryOrdersParam"
- Changed
history_market_temperature1 field changed- removed
Input schema / titleRemoved value: -"MarketDateRangeParam"
- Changed
history_orders1 field changed- removed
Input schema / titleRemoved value: -"HistoryOrdersParam"
- Changed
industry_peers1 field changed- removed
Input schema / titleRemoved value: -"IndustryPeersParam"
- Changed
industry_rank1 field changed- removed
Input schema / titleRemoved value: -"IndustryRankParam"
- Changed
industry_valuation1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
industry_valuation_dist1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
institution_rating1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
institution_rating_detail1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
institution_rating_history1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
institution_rating_industry_rank1 field changed- removed
Input schema / titleRemoved value: -"InstitutionRatingIndustryRankParam"
- Changed
institutional_views1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
intraday1 field changed- removed
Input schema / titleRemoved value: -"IntradayParam"
- Changed
invest_relation1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
ipo_detail1 field changed- removed
Input schema / titleRemoved value: -"IpoDetailParam"
- Changed
ipo_listed1 field changed- removed
Input schema / titleRemoved value: -"IpoListedParam"
- Changed
ipo_order_detail1 field changed- removed
Input schema / titleRemoved value: -"IpoOrderDetailParam"
- Changed
ipo_orders1 field changed- removed
Input schema / titleRemoved value: -"IpoOrdersParam"
- Changed
ipo_profit_loss1 field changed- removed
Input schema / titleRemoved value: -"IpoProfitLossParam"
- Added
macrodata - Added
macrodata_indicators - Changed
margin_ratio1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
market_temperature1 field changed- removed
Input schema / titleRemoved value: -"MarketParam"
- Changed
news1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
news_search1 field changed- removed
Input schema / titleRemoved value: -"NewsSearchParam"
- Changed
operating1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
option_chain_expiry_date_list1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
option_chain_info_by_date1 field changed- removed
Input schema / titleRemoved value: -"SymbolDateParam"
- Changed
option_quote1 field changed- removed
Input schema / titleRemoved value: -"SymbolsParam"
- Changed
option_volume1 field changed- removed
Input schema / titleRemoved value: -"OptionVolumeParam"
- Changed
option_volume_daily1 field changed- removed
Input schema / titleRemoved value: -"OptionVolumeDailyParam"
- Changed
order_detail1 field changed- removed
Input schema / titleRemoved value: -"OrderIdParam"
- Changed
profit_analysis1 field changed- removed
Input schema / titleRemoved value: -"ProfitAnalysisParam"
- Changed
profit_analysis_detail1 field changed- removed
Input schema / titleRemoved value: -"ProfitAnalysisDetailParam"
- Changed
quant_run2 fields changed- removed
Input schema / descriptionRemoved value: -"Parameters for running an indicator script against historical K-line data:\ntarget symbol, date range, K-line period, the script source itself, and\noptional script inputs." - removed
Input schema / titleRemoved value: -"RunScriptParam"
- Changed
quote1 field changed- removed
Input schema / titleRemoved value: -"SymbolsParam"
- Changed
rank_list1 field changed- removed
Input schema / titleRemoved value: -"RankListParam"
- Changed
replace_order1 field changed- removed
Input schema / titleRemoved value: -"ReplaceOrderParam"
- Changed
screener_indicators1 field changed- removed
Input schema / titleRemoved value: -"ScreenerIndicatorsParam"
- Changed
screener_recommend_strategies1 field changed- removed
Input schema / titleRemoved value: -"ScreenerRecommendStrategiesParam"
- Changed
screener_search1 field changed- removed
Input schema / titleRemoved value: -"ScreenerSearchParam"
- Changed
screener_strategy1 field changed- removed
Input schema / titleRemoved value: -"ScreenerStrategyParam"
- Changed
screener_user_strategies1 field changed- removed
Input schema / titleRemoved value: -"ScreenerUserStrategiesParam"
- Changed
security_list1 field changed- removed
Input schema / titleRemoved value: -"SecurityListParam"
- Changed
shareholder1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
shareholder_detail1 field changed- removed
Input schema / titleRemoved value: -"ShareholderDetailParam"
- Changed
shareholder_top1 field changed- removed
Input schema / titleRemoved value: -"ShareholderTopParam"
- Changed
sharelist_add1 field changed- removed
Input schema / titleRemoved value: -"SharelistItemsParam"
- Changed
sharelist_create1 field changed- removed
Input schema / titleRemoved value: -"SharelistCreateParam"
- Changed
sharelist_delete1 field changed- removed
Input schema / titleRemoved value: -"SharelistIdParam"
- Changed
sharelist_detail1 field changed- removed
Input schema / titleRemoved value: -"SharelistIdParam"
- Changed
sharelist_list1 field changed- removed
Input schema / titleRemoved value: -"SharelistCountParam"
- Changed
sharelist_popular1 field changed- removed
Input schema / titleRemoved value: -"SharelistCountParam"
- Changed
sharelist_remove1 field changed- removed
Input schema / titleRemoved value: -"SharelistItemsParam"
- Changed
sharelist_sort1 field changed- removed
Input schema / titleRemoved value: -"SharelistItemsParam"
- Changed
short_positions1 field changed- removed
Input schema / titleRemoved value: -"ShortPositionsParam"
- Changed
short_trades1 field changed- removed
Input schema / titleRemoved value: -"ShortTradesParam"
- Changed
statement_export1 field changed- removed
Input schema / titleRemoved value: -"StatementExportParam"
- Changed
statement_list1 field changed- removed
Input schema / titleRemoved value: -"StatementListParam"
- Changed
static_info1 field changed- removed
Input schema / titleRemoved value: -"SymbolsParam"
- Changed
submit_order1 field changed- removed
Input schema / titleRemoved value: -"SubmitOrderParam"
- Changed
today_executions1 field changed- removed
Input schema / titleRemoved value: -"TodayExecutionsParam"
- Changed
today_orders1 field changed- removed
Input schema / titleRemoved value: -"TodayOrdersParam"
- Changed
top_movers1 field changed- removed
Input schema / titleRemoved value: -"StockEventsParam"
- Changed
topic1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
topic_create1 field changed- removed
Input schema / titleRemoved value: -"TopicCreateParam"
- Changed
topic_create_reply1 field changed- removed
Input schema / titleRemoved value: -"TopicCreateReplyParam"
- Changed
topic_detail1 field changed- removed
Input schema / titleRemoved value: -"TopicIdParam"
- Changed
topic_replies1 field changed- removed
Input schema / titleRemoved value: -"TopicRepliesParam"
- Changed
topic_search1 field changed- removed
Input schema / titleRemoved value: -"TopicSearchParam"
- Changed
trade_stats1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
trades1 field changed- removed
Input schema / titleRemoved value: -"SymbolCountParam"
- Changed
trading_days1 field changed- removed
Input schema / titleRemoved value: -"MarketDateRangeParam"
- Changed
update_watchlist_group1 field changed- removed
Input schema / titleRemoved value: -"UpdateWatchlistGroupParam"
- Changed
valuation1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
valuation_comparison1 field changed- removed
Input schema / titleRemoved value: -"ValuationComparisonParam"
- Changed
valuation_history1 field changed- removed
Input schema / titleRemoved value: -"SymbolParam"
- Changed
valuation_rank1 field changed- removed
Input schema / titleRemoved value: -"ValuationRankParam"
- Changed
warrant_list1 field changed- removed
Input schema / titleRemoved value: -"WarrantListParam"
- Changed
warrant_quote1 field changed- removed
Input schema / titleRemoved value: -"SymbolsParam"
- Changed
withdrawals1 field changed- removed
Input schema / titleRemoved value: -"WithdrawalParam"
81 tool updates
v0.6.0- Changed
alert_disable5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `alert_enable` / `alert_disable`. The handler builds this exact\nobject on success." - removed
Output schema / properties / alert_id / descriptionRemoved value: -"The alert (indicator) ID that was toggled." - removed
Output schema / properties / enabled / descriptionRemoved value: -"New enabled state: `true` for enable, `false` for disable." - removed
Output schema / titleRemoved value: -"AlertToggleResponse"
- Changed
alert_enable5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `alert_enable` / `alert_disable`. The handler builds this exact\nobject on success." - removed
Output schema / properties / alert_id / descriptionRemoved value: -"The alert (indicator) ID that was toggled." - removed
Output schema / properties / enabled / descriptionRemoved value: -"New enabled state: `true` for enable, `false` for disable." - removed
Output schema / titleRemoved value: -"AlertToggleResponse"
- Changed
alert_list15 fields changed- removed
Output schema / $defs / AlertIndicator / descriptionRemoved value: -"A single configured price-alert indicator." - removed
Output schema / $defs / AlertIndicator / properties / condition / descriptionRemoved value: -"Alert condition." - removed
Output schema / $defs / AlertIndicator / properties / enabled / descriptionRemoved value: -"Whether the alert is currently enabled." - removed
Output schema / $defs / AlertIndicator / properties / frequency / descriptionRemoved value: -"Alert frequency." - removed
Output schema / $defs / AlertIndicator / properties / id / descriptionRemoved value: -"Alert (indicator) ID. Use as `alert_id` in alert_delete/enable/disable." - removed
Output schema / $defs / AlertIndicator / properties / indicator_id / descriptionRemoved value: -"Indicator type ID." - removed
Output schema / $defs / AlertIndicator / properties / price / descriptionRemoved value: -"Threshold price or percentage value." - removed
Output schema / $defs / AlertIndicator / properties / triggered_at / descriptionRemoved value: -"Time the alert last triggered (RFC3339), if any." - removed
Output schema / $defs / AlertSymbolGroup / descriptionRemoved value: -"A group of alert indicators configured for one security." - removed
Output schema / $defs / AlertSymbolGroup / properties / indicators / descriptionRemoved value: -"Configured alert indicators for this symbol." - removed
Output schema / $defs / AlertSymbolGroup / properties / symbol / descriptionRemoved value: -"Security symbol (upstream `counter_id`, normalized to `<CODE>.<MARKET>`)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `alert_list`. The upstream price-alert payload, forwarded after\nthe standard transform (note: upstream `counter_id` is renamed to `symbol`\nand `*_at` timestamps become RFC3339). Subset of the wire payload — only the\ndocumented fields are declared; all are optional." - removed
Output schema / properties / lists / descriptionRemoved value: -"Per-symbol alert groups." - removed
Output schema / titleRemoved value: -"AlertListResponse"
- Changed
anomaly9 fields changed- removed
Output schema / $defs / AnomalyChange / properties / change_rate / descriptionRemoved value: -"Price change rate (decimal ratio)." - removed
Output schema / $defs / AnomalyChange / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / AnomalyChange / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"700.HK\"." - removed
Output schema / $defs / AnomalyChange / properties / volume / descriptionRemoved value: -"Traded volume associated with the anomaly." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `anomaly`. Wraps a `changes` array of unusual price/volume\nalerts plus an `all_off` flag. Subset of the wire response — the\ndescription marks `changes[]` as having further undocumented fields." - removed
Output schema / properties / all_off / descriptionRemoved value: -"Whether anomaly alerting is globally off for the market." - removed
Output schema / properties / changes / descriptionRemoved value: -"Anomaly alert entries." - removed
Output schema / titleRemoved value: -"AnomalyResponse"
- Changed
broker_holding8 fields changed- removed
Output schema / $defs / BrokerHoldingItem / properties / broker_name / descriptionRemoved value: -"Broker (participant) name." - removed
Output schema / $defs / BrokerHoldingItem / properties / holding_change / descriptionRemoved value: -"Change in shares held over the period." - removed
Output schema / $defs / BrokerHoldingItem / properties / holding_quantity / descriptionRemoved value: -"Shares held by this broker." - removed
Output schema / $defs / BrokerHoldingItem / properties / holding_ratio / descriptionRemoved value: -"Holding as a ratio of total issued shares." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `broker_holding`. Wraps an `items` array of top broker holdings\nfor an HK stock (HKEX CCASS participant disclosure). Subset of the wire\nresponse." - removed
Output schema / properties / items / descriptionRemoved value: -"Top broker holding entries for the requested period." - removed
Output schema / titleRemoved value: -"BrokerHoldingResponse"
- Changed
broker_holding_daily8 fields changed- removed
Output schema / $defs / BrokerHoldingDailyItem / properties / date / descriptionRemoved value: -"Disclosure date (yyyy-mm-dd)." - removed
Output schema / $defs / BrokerHoldingDailyItem / properties / holding_change / descriptionRemoved value: -"Change in shares held versus the prior day." - removed
Output schema / $defs / BrokerHoldingDailyItem / properties / holding_quantity / descriptionRemoved value: -"Shares held by this broker on that date." - removed
Output schema / $defs / BrokerHoldingDailyItem / properties / holding_ratio / descriptionRemoved value: -"Holding as a ratio of total issued shares." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `broker_holding_daily`. Wraps an `items` array of the daily\nholding history for one broker in an HK stock. Subset of the wire response." - removed
Output schema / properties / items / descriptionRemoved value: -"Daily holding history entries." - removed
Output schema / titleRemoved value: -"BrokerHoldingDailyResponse"
- Changed
broker_holding_detail10 fields changed- removed
Output schema / $defs / BrokerHoldingDetailItem / properties / broker_id / descriptionRemoved value: -"Broker (participant) number." - removed
Output schema / $defs / BrokerHoldingDetailItem / properties / broker_name / descriptionRemoved value: -"Broker (participant) name." - removed
Output schema / $defs / BrokerHoldingDetailItem / properties / date / descriptionRemoved value: -"Disclosure date (yyyy-mm-dd)." - removed
Output schema / $defs / BrokerHoldingDetailItem / properties / holding_change / descriptionRemoved value: -"Change in shares held." - removed
Output schema / $defs / BrokerHoldingDetailItem / properties / holding_quantity / descriptionRemoved value: -"Shares held by this broker." - removed
Output schema / $defs / BrokerHoldingDetailItem / properties / holding_ratio / descriptionRemoved value: -"Holding as a ratio of total issued shares." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `broker_holding_detail`. Wraps an `items` array of the full\nbroker holding list for an HK stock (HKEX CCASS participant disclosure).\nSubset of the wire response." - removed
Output schema / properties / items / descriptionRemoved value: -"Full broker holding detail entries." - removed
Output schema / titleRemoved value: -"BrokerHoldingDetailResponse"
- Changed
brokers7 fields changed- removed
Output schema / $defs / BrokerLevel / properties / broker_ids / descriptionRemoved value: -"Broker IDs queueing at this level. Map them to names via `participants`." - removed
Output schema / $defs / BrokerLevel / properties / position / descriptionRemoved value: -"Position number (1-based, depth ordering)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `brokers`. Bid/ask broker queues for a security." - removed
Output schema / properties / ask_brokers / descriptionRemoved value: -"Ask brokers, best price first." - removed
Output schema / properties / bid_brokers / descriptionRemoved value: -"Bid brokers, best price first." - removed
Output schema / titleRemoved value: -"BrokersResponse"
- Changed
business_segments_history14 fields changed- removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / descriptionRemoved value: -"One period snapshot in `business_segments_history`'s `historical`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / properties / business / descriptionRemoved value: -"Revenue by business line." - removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / properties / date / descriptionRemoved value: -"Period date." - removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / properties / regionals / descriptionRemoved value: -"Revenue by region." - removed
Output schema / $defs / BusinessSegmentsHistoryPeriod / properties / total / descriptionRemoved value: -"Total revenue for the period." - removed
Output schema / $defs / SegmentBreakdown / descriptionRemoved value: -"One segment breakdown entry in `business_segments_history`\n(`business[]` / `regionals[]`).\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / SegmentBreakdown / properties / name / descriptionRemoved value: -"Segment / region name." - removed
Output schema / $defs / SegmentBreakdown / properties / percent / descriptionRemoved value: -"Percentage of total." - removed
Output schema / $defs / SegmentBreakdown / properties / value / descriptionRemoved value: -"Absolute value." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `business_segments_history`. Wraps a `historical` array of\nper-period segment snapshots.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / historical / descriptionRemoved value: -"Per-period segment snapshots." - removed
Output schema / titleRemoved value: -"BusinessSegmentsHistoryResponse"
- Changed
capital_distribution9 fields changed- removed
Output schema / $defs / CapitalDistribution / properties / large / descriptionRemoved value: -"Capital from large orders." - removed
Output schema / $defs / CapitalDistribution / properties / medium / descriptionRemoved value: -"Capital from medium orders." - removed
Output schema / $defs / CapitalDistribution / properties / small / descriptionRemoved value: -"Capital from small orders." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `capital_distribution`." - removed
Output schema / properties / capital_in / descriptionRemoved value: -"Inflow capital broken down by order size." - removed
Output schema / properties / capital_out / descriptionRemoved value: -"Outflow capital broken down by order size." - removed
Output schema / properties / timestamp / descriptionRemoved value: -"Snapshot timestamp (RFC3339)." - removed
Output schema / titleRemoved value: -"CapitalDistributionResponse"
- Changed
company12 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `company`. Company overview / profile.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / ceo / descriptionRemoved value: -"Chief Executive Officer." - removed
Output schema / properties / descriptionRemoved value: -{ - "description": "Business profile / description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / employees / descriptionRemoved value: -"Number of employees." - removed
Output schema / properties / exchange / descriptionRemoved value: -"Listing exchange." - removed
Output schema / properties / founded_year / descriptionRemoved value: -"Year the company was founded." - removed
Output schema / properties / industry / descriptionRemoved value: -"Industry classification." - removed
Output schema / properties / market_cap / descriptionRemoved value: -"Market capitalization." - removed
Output schema / properties / name / descriptionRemoved value: -"Company name." - removed
Output schema / properties / website / descriptionRemoved value: -"Company website." - removed
Output schema / titleRemoved value: -"CompanyResponse"
- Changed
consensus11 fields changed- removed
Output schema / $defs / ConsensusItem / descriptionRemoved value: -"One record in `consensus`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ConsensusItem / properties / analyst_count / descriptionRemoved value: -"Number of contributing analysts." - removed
Output schema / $defs / ConsensusItem / properties / eps_estimate / descriptionRemoved value: -"EPS estimate." - removed
Output schema / $defs / ConsensusItem / properties / last_updated / descriptionRemoved value: -"Last update time." - removed
Output schema / $defs / ConsensusItem / properties / net_income_estimate / descriptionRemoved value: -"Net income estimate." - removed
Output schema / $defs / ConsensusItem / properties / period / descriptionRemoved value: -"Estimate period." - removed
Output schema / $defs / ConsensusItem / properties / revenue_estimate / descriptionRemoved value: -"Revenue estimate." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `consensus`. Wraps an `items` array of consensus estimates.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Consensus estimate records for upcoming periods." - removed
Output schema / titleRemoved value: -"ConsensusResponse"
- Changed
corp_action9 fields changed- removed
Output schema / $defs / CorpActionItem / descriptionRemoved value: -"One event in `corp_action`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / CorpActionItem / properties / action_type / descriptionRemoved value: -"Action type (split, buyback, name change, ...)." - removed
Output schema / $defs / CorpActionItem / properties / descriptionRemoved value: -{ - "description": "Free-text description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / CorpActionItem / properties / effective_date / descriptionRemoved value: -"Effective date." - removed
Output schema / $defs / CorpActionItem / properties / ratio / descriptionRemoved value: -"Ratio (e.g. for splits)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `corp_action`. Wraps an `items` array of corporate actions.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Corporate action events." - removed
Output schema / titleRemoved value: -"CorpActionResponse"
- Changed
create_watchlist_group4 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `create_watchlist_group`." - removed
Output schema / properties / id / descriptionRemoved value: -"The newly-created watchlist group ID. Pass this to\n`update_watchlist_group` / `delete_watchlist_group`." - removed
Output schema / titleRemoved value: -"CreateWatchlistGroupResponse"
- Changed
dca_check8 fields changed- removed
Output schema / $defs / DcaCheckItem / descriptionRemoved value: -"DCA-eligibility result for one symbol." - removed
Output schema / $defs / DcaCheckItem / properties / reason / descriptionRemoved value: -"Reason when unsupported." - removed
Output schema / $defs / DcaCheckItem / properties / support_dca / descriptionRemoved value: -"Whether the symbol supports DCA recurring investment." - removed
Output schema / $defs / DcaCheckItem / properties / symbol / descriptionRemoved value: -"Security symbol." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dca_check`. DCA-eligibility result per queried symbol,\nforwarded after the standard transform (upstream `counter_ids` query →\nper-symbol items). Subset of the wire payload — only documented fields are\ndeclared; all optional." - removed
Output schema / properties / items / descriptionRemoved value: -"Per-symbol support results." - removed
Output schema / titleRemoved value: -"DcaCheckResponse"
- Changed
dca_history11 fields changed- removed
Output schema / $defs / DcaExecution / descriptionRemoved value: -"A single DCA plan execution record." - removed
Output schema / $defs / DcaExecution / properties / amount / descriptionRemoved value: -"Amount invested (decimal string)." - removed
Output schema / $defs / DcaExecution / properties / date / descriptionRemoved value: -"Execution date." - removed
Output schema / $defs / DcaExecution / properties / order_id / descriptionRemoved value: -"Resulting order ID, if any." - removed
Output schema / $defs / DcaExecution / properties / price / descriptionRemoved value: -"Execution price (decimal string)." - removed
Output schema / $defs / DcaExecution / properties / quantity / descriptionRemoved value: -"Quantity acquired (decimal string)." - removed
Output schema / $defs / DcaExecution / properties / status / descriptionRemoved value: -"Execution status." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dca_history`. Execution records for one DCA plan, forwarded\nafter the standard transform. Subset of the wire payload — only documented\nfields are declared; all optional." - removed
Output schema / properties / executions / descriptionRemoved value: -"Execution records." - removed
Output schema / titleRemoved value: -"DcaHistoryResponse"
- Changed
dca_list12 fields changed- removed
Output schema / $defs / DcaPlan / descriptionRemoved value: -"A single DCA recurring-investment plan." - removed
Output schema / $defs / DcaPlan / properties / amount / descriptionRemoved value: -"Amount invested per cycle (decimal string)." - removed
Output schema / $defs / DcaPlan / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / $defs / DcaPlan / properties / frequency / descriptionRemoved value: -"Investment frequency (Daily / Weekly / Monthly)." - removed
Output schema / $defs / DcaPlan / properties / next_execution_date / descriptionRemoved value: -"Next scheduled execution date (RFC3339; upstream `next_trd_date`)." - removed
Output schema / $defs / DcaPlan / properties / plan_id / descriptionRemoved value: -"Plan ID. Use with dca_update / dca_pause / dca_resume / dca_stop." - removed
Output schema / $defs / DcaPlan / properties / status / descriptionRemoved value: -"Plan status (Active / Suspended / Finished)." - removed
Output schema / $defs / DcaPlan / properties / symbol / descriptionRemoved value: -"Security symbol (e.g. \"AAPL.US\")." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dca_list`. Upstream DCA plan-query payload forwarded after the\nstandard transform; the `next_trd_date` unix field is converted to RFC3339.\nSubset of the wire payload — only documented fields are declared; all\noptional." - removed
Output schema / properties / plans / descriptionRemoved value: -"Recurring-investment (DCA) plans." - removed
Output schema / titleRemoved value: -"DcaListResponse"
- Changed
dca_stats14 fields changed- removed
Output schema / $defs / DcaStatsItem / descriptionRemoved value: -"Per-symbol DCA statistics line." - removed
Output schema / $defs / DcaStatsItem / properties / invested / descriptionRemoved value: -"Amount invested in this symbol (decimal string)." - removed
Output schema / $defs / DcaStatsItem / properties / return_rate / descriptionRemoved value: -"Return rate for this symbol (decimal string)." - removed
Output schema / $defs / DcaStatsItem / properties / symbol / descriptionRemoved value: -"Security symbol." - removed
Output schema / $defs / DcaStatsItem / properties / value / descriptionRemoved value: -"Current value of this symbol's position (decimal string)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dca_stats`. Aggregate DCA statistics forwarded after the\nstandard transform. Subset of the wire payload — only documented fields are\ndeclared; all optional." - removed
Output schema / properties / items / descriptionRemoved value: -"Per-symbol breakdown." - removed
Output schema / properties / plan_count / descriptionRemoved value: -"Number of plans included." - removed
Output schema / properties / return_rate / descriptionRemoved value: -"Overall return rate (decimal string)." - removed
Output schema / properties / total_invested / descriptionRemoved value: -"Total amount invested across plans (decimal string)." - removed
Output schema / properties / total_return / descriptionRemoved value: -"Total return (decimal string)." - removed
Output schema / properties / total_value / descriptionRemoved value: -"Current total market value (decimal string)." - removed
Output schema / titleRemoved value: -"DcaStatsResponse"
- Changed
delete_watchlist_group5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `delete_watchlist_group`." - removed
Output schema / properties / deleted / descriptionRemoved value: -"Always `true` on success." - removed
Output schema / properties / id / descriptionRemoved value: -"The deleted watchlist group ID (echoed from the request)." - removed
Output schema / titleRemoved value: -"DeleteWatchlistGroupResponse"
- Changed
depth9 fields changed- removed
Output schema / $defs / DepthLevel / properties / order_num / descriptionRemoved value: -"Number of orders sitting at this price level." - removed
Output schema / $defs / DepthLevel / properties / position / descriptionRemoved value: -"Position number (1-based, depth ordering)." - removed
Output schema / $defs / DepthLevel / properties / price / descriptionRemoved value: -"Price at this level. May be null when the level is empty." - removed
Output schema / $defs / DepthLevel / properties / volume / descriptionRemoved value: -"Total quantity at this price level." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `depth`. Snapshot of the bid/ask order book." - removed
Output schema / properties / asks / descriptionRemoved value: -"Ask levels, best price first." - removed
Output schema / properties / bids / descriptionRemoved value: -"Bid levels, best price first." - removed
Output schema / titleRemoved value: -"DepthResponse"
- Changed
dividend12 fields changed- removed
Output schema / $defs / DividendItem / descriptionRemoved value: -"One dividend event in `dividend`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / DividendItem / properties / amount / descriptionRemoved value: -"Dividend amount." - removed
Output schema / $defs / DividendItem / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / $defs / DividendItem / properties / dividend_type / descriptionRemoved value: -"Dividend type." - removed
Output schema / $defs / DividendItem / properties / ex_date / descriptionRemoved value: -"Ex-dividend date." - removed
Output schema / $defs / DividendItem / properties / pay_date / descriptionRemoved value: -"Payment date." - removed
Output schema / $defs / DividendItem / properties / record_date / descriptionRemoved value: -"Record date." - removed
Output schema / $defs / DividendItem / properties / status / descriptionRemoved value: -"Dividend status." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dividend`. Wraps an `items` array of dividend events.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Dividend events for the symbol." - removed
Output schema / titleRemoved value: -"DividendResponse"
- Changed
dividend_detail12 fields changed- removed
Output schema / $defs / DividendDetailItem / descriptionRemoved value: -"One distribution scheme in `dividend_detail`'s `details`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / DividendDetailItem / properties / cash_dividend / descriptionRemoved value: -"Cash dividend per share." - removed
Output schema / $defs / DividendDetailItem / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / $defs / DividendDetailItem / properties / ex_date / descriptionRemoved value: -"Ex-dividend date." - removed
Output schema / $defs / DividendDetailItem / properties / pay_date / descriptionRemoved value: -"Payment date." - removed
Output schema / $defs / DividendDetailItem / properties / period / descriptionRemoved value: -"Reporting period." - removed
Output schema / $defs / DividendDetailItem / properties / record_date / descriptionRemoved value: -"Record date." - removed
Output schema / $defs / DividendDetailItem / properties / stock_dividend / descriptionRemoved value: -"Stock dividend ratio / amount." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `dividend_detail`. Wraps a `details` array of distribution\nschemes.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / details / descriptionRemoved value: -"Per-period distribution schemes." - removed
Output schema / titleRemoved value: -"DividendDetailResponse"
- Changed
estimate_max_purchase_quantity5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `estimate_max_purchase_quantity`.\n\nBoth quantities are `Decimal` upstream and become strings after the\n`to_tool_json` serializer pipeline (snake_case + decimal stringification)." - removed
Output schema / properties / cash_max_qty / descriptionRemoved value: -"Maximum buy/sell quantity using cash buying power." - removed
Output schema / properties / margin_max_qty / descriptionRemoved value: -"Maximum buy/sell quantity using margin buying power." - removed
Output schema / titleRemoved value: -"EstimateMaxQtyResponse"
- Changed
executive11 fields changed- removed
Output schema / $defs / ExecutiveMember / descriptionRemoved value: -"One person in `executive`'s `members`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ExecutiveMember / properties / age / descriptionRemoved value: -"Age." - removed
Output schema / $defs / ExecutiveMember / properties / appointed_date / descriptionRemoved value: -"Date appointed." - removed
Output schema / $defs / ExecutiveMember / properties / biography / descriptionRemoved value: -"Biography." - removed
Output schema / $defs / ExecutiveMember / properties / compensation / descriptionRemoved value: -"Compensation." - removed
Output schema / $defs / ExecutiveMember / properties / name / descriptionRemoved value: -"Full name." - removed
Output schema / $defs / ExecutiveMember / properties / titleRemoved value: -{ - "description": "Title / role.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `executive`. Wraps a `members` array of executives / board\nmembers.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / members / descriptionRemoved value: -"Executive and board members." - removed
Output schema / titleRemoved value: -"ExecutiveResponse"
- Changed
finance_calendar10 fields changed- removed
Output schema / $defs / FinanceCalendarBucket / properties / date / descriptionRemoved value: -"Bucket date (yyyy-mm-dd)." - removed
Output schema / $defs / FinanceCalendarBucket / properties / infos / descriptionRemoved value: -"Events occurring on this date." - removed
Output schema / $defs / FinanceCalendarEvent / properties / datetime / descriptionRemoved value: -"Event time (RFC3339)." - removed
Output schema / $defs / FinanceCalendarEvent / properties / id / descriptionRemoved value: -"Event ID (may be empty for events without one, e.g. market closures)." - removed
Output schema / $defs / FinanceCalendarEvent / properties / market / descriptionRemoved value: -"Market code, e.g. \"US\" / \"HK\"." - removed
Output schema / $defs / FinanceCalendarEvent / properties / symbol / descriptionRemoved value: -"Security symbol when the event is stock-specific, e.g. \"AAPL.US\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `finance_calendar`. Wraps a `list` array of date buckets, each\nholding an `infos` array of events. Subset of the wire response — the\nevent field set varies by `category` (report / dividend / split / ipo /\nmacrodata / closed) and is only partially documented, so only the keys the\nmerge/dedup pipeline relies on are modeled here." - removed
Output schema / properties / list / descriptionRemoved value: -"Date buckets, sorted ascending by date." - removed
Output schema / titleRemoved value: -"FinanceCalendarResponse"
- Changed
financial_report_latest10 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `financial_report_latest`. Latest financial report summary.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / eps / descriptionRemoved value: -"Earnings per share." - removed
Output schema / properties / gross_margin / descriptionRemoved value: -"Gross margin." - removed
Output schema / properties / net_income / descriptionRemoved value: -"Net income." - removed
Output schema / properties / period / descriptionRemoved value: -"Reporting period." - removed
Output schema / properties / report_date / descriptionRemoved value: -"Report date." - removed
Output schema / properties / revenue / descriptionRemoved value: -"Revenue." - removed
Output schema / properties / roe / descriptionRemoved value: -"Return on equity." - removed
Output schema / titleRemoved value: -"FinancialReportLatestResponse"
- Changed
financial_report_snapshot10 fields changed- removed
Output schema / $defs / ForecastActual / descriptionRemoved value: -"An actual-vs-forecast comparison block in `financial_report_snapshot`\n(`fo_revenue` / `fo_ebit` / `fo_eps`).\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ForecastActual / properties / cmp / descriptionRemoved value: -"Actual vs forecast comparison." - removed
Output schema / $defs / ForecastActual / properties / yoy / descriptionRemoved value: -"Year-over-year change." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `financial_report_snapshot`. Actual-vs-forecast comparison\nplus financial ratios.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / fo_ebit / descriptionRemoved value: -"EBIT: actual vs forecast." - removed
Output schema / properties / fo_eps / descriptionRemoved value: -"EPS: actual vs forecast." - removed
Output schema / properties / fo_revenue / descriptionRemoved value: -"Revenue: actual vs forecast." - removed
Output schema / properties / report_desc / descriptionRemoved value: -"Text summary of the report." - removed
Output schema / titleRemoved value: -"FinancialReportSnapshotResponse"
- Changed
forecast_eps11 fields changed- removed
Output schema / $defs / ForecastEpsItem / descriptionRemoved value: -"One record in `forecast_eps`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ForecastEpsItem / properties / analyst_count / descriptionRemoved value: -"Number of contributing analysts." - removed
Output schema / $defs / ForecastEpsItem / properties / eps_actual / descriptionRemoved value: -"Actual reported EPS." - removed
Output schema / $defs / ForecastEpsItem / properties / eps_estimate / descriptionRemoved value: -"Consensus EPS estimate." - removed
Output schema / $defs / ForecastEpsItem / properties / forecast_end_date / descriptionRemoved value: -"Forecast period end (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / ForecastEpsItem / properties / forecast_start_date / descriptionRemoved value: -"Forecast period start (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / ForecastEpsItem / properties / surprise_pct / descriptionRemoved value: -"Surprise percentage (actual vs estimate)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `forecast_eps`. Wraps an `items` array of EPS estimates.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"EPS forecast / actual records." - removed
Output schema / titleRemoved value: -"ForecastEpsResponse"
- Changed
fund_holder11 fields changed- removed
Output schema / $defs / FundHolderItem / descriptionRemoved value: -"One holder in `fund_holder`'s `fund_holders`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / FundHolderItem / properties / change / descriptionRemoved value: -"Change in shares." - removed
Output schema / $defs / FundHolderItem / properties / fund_name / descriptionRemoved value: -"Fund name." - removed
Output schema / $defs / FundHolderItem / properties / fund_symbol / descriptionRemoved value: -"Fund symbol." - removed
Output schema / $defs / FundHolderItem / properties / ratio / descriptionRemoved value: -"Ownership ratio." - removed
Output schema / $defs / FundHolderItem / properties / reported_at / descriptionRemoved value: -"Report date." - removed
Output schema / $defs / FundHolderItem / properties / shares / descriptionRemoved value: -"Shares held." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `fund_holder`. Wraps a `fund_holders` array.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / fund_holders / descriptionRemoved value: -"Funds / ETFs that hold the symbol." - removed
Output schema / titleRemoved value: -"FundHolderResponse"
- Changed
fund_positions12 fields changed- removed
Output schema / $defs / FundPosition / properties / cost_net_asset_value / descriptionRemoved value: -"Cost net asset value." - removed
Output schema / $defs / FundPosition / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / $defs / FundPosition / properties / current_net_asset_value / descriptionRemoved value: -"Net asset value at last settlement." - removed
Output schema / $defs / FundPosition / properties / holding_units / descriptionRemoved value: -"Number of fund units held." - removed
Output schema / $defs / FundPosition / properties / net_asset_value_day / descriptionRemoved value: -"Settlement timestamp (RFC3339)." - removed
Output schema / $defs / FundPosition / properties / symbol / descriptionRemoved value: -"Fund ISIN code." - removed
Output schema / $defs / FundPosition / properties / symbol_name / descriptionRemoved value: -"Display name of the fund." - removed
Output schema / $defs / FundPositionChannel / properties / account_channel / descriptionRemoved value: -"Broker channel identifier. Always emitted as `null` for privacy." - removed
Output schema / $defs / FundPositionChannel / properties / fund_info / descriptionRemoved value: -"Fund positions held in this channel." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `fund_positions`. Same channel-list shape as\n`StockPositionsResponse`, but with fund-specific position fields." - removed
Output schema / titleRemoved value: -"FundPositionsResponse"
- Changed
history_market_temperature11 fields changed- removed
Output schema / $defs / MarketTemperatureResponse / descriptionRemoved value: -"Returned by `market_temperature`." - removed
Output schema / $defs / MarketTemperatureResponse / properties / descriptionRemoved value: -{ - "description": "Human-readable temperature description (locale-aware).", - "type": "string" -} - removed
Output schema / $defs / MarketTemperatureResponse / properties / sentiment / descriptionRemoved value: -"Market sentiment indicator (0-100)." - removed
Output schema / $defs / MarketTemperatureResponse / properties / temperature / descriptionRemoved value: -"Temperature value (0-100)." - removed
Output schema / $defs / MarketTemperatureResponse / properties / timestamp / descriptionRemoved value: -"Snapshot timestamp (RFC3339)." - removed
Output schema / $defs / MarketTemperatureResponse / properties / valuation / descriptionRemoved value: -"Market valuation indicator (0-100)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `history_market_temperature`." - removed
Output schema / properties / list / descriptionRemoved value: -"Per-period samples in chronological order." - removed
Output schema / properties / type / descriptionRemoved value: -"Granularity, e.g. \"day\"." - removed
Output schema / titleRemoved value: -"HistoryMarketTemperatureResponse"
- Changed
industry_peers15 fields changed- removed
Output schema / $defs / IndustryPeersNode / descriptionRemoved value: -"One node in `industry_peers`' `chain` tree. Self-referential via `next`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryPeersNode / properties / chg / descriptionRemoved value: -"Daily change." - removed
Output schema / $defs / IndustryPeersNode / properties / counter_id / descriptionRemoved value: -"Node identifier (transformed from `counter_id`)." - removed
Output schema / $defs / IndustryPeersNode / properties / name / descriptionRemoved value: -"Node name." - removed
Output schema / $defs / IndustryPeersNode / properties / next / descriptionRemoved value: -"Child sub-sector nodes." - removed
Output schema / $defs / IndustryPeersNode / properties / stock_num / descriptionRemoved value: -"Number of stocks in this sub-sector." - removed
Output schema / $defs / IndustryPeersNode / properties / ytd_chg / descriptionRemoved value: -"Year-to-date change." - removed
Output schema / $defs / IndustryPeersTop / descriptionRemoved value: -"`top` block of `industry_peers`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryPeersTop / properties / market / descriptionRemoved value: -"Market code." - removed
Output schema / $defs / IndustryPeersTop / properties / name / descriptionRemoved value: -"Industry group name." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `industry_peers`. A hierarchical sub-sector tree (`chain`) plus\nthe originating industry group (`top`).\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / chain / descriptionRemoved value: -"Root node of the sub-sector tree." - removed
Output schema / properties / top / descriptionRemoved value: -"The originating industry group." - removed
Output schema / titleRemoved value: -"IndustryPeersResponse"
- Changed
industry_valuation16 fields changed- removed
Output schema / $defs / IndustryValuationHistoryPoint / descriptionRemoved value: -"One history point in `industry_valuation`'s nested `history`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryValuationHistoryPoint / properties / date / descriptionRemoved value: -"Sample date (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / IndustryValuationHistoryPoint / properties / pb / descriptionRemoved value: -"Price-to-book at this date." - removed
Output schema / $defs / IndustryValuationHistoryPoint / properties / pe / descriptionRemoved value: -"Price-to-earnings at this date." - removed
Output schema / $defs / IndustryValuationItem / descriptionRemoved value: -"One peer in `industry_valuation`'s `list`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryValuationItem / properties / dividend_yield / descriptionRemoved value: -"Dividend yield." - removed
Output schema / $defs / IndustryValuationItem / properties / history / descriptionRemoved value: -"Per-date history of PE/PB." - removed
Output schema / $defs / IndustryValuationItem / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / IndustryValuationItem / properties / pb / descriptionRemoved value: -"Price-to-book." - removed
Output schema / $defs / IndustryValuationItem / properties / pe / descriptionRemoved value: -"Price-to-earnings." - removed
Output schema / $defs / IndustryValuationItem / properties / ps / descriptionRemoved value: -"Price-to-sales." - removed
Output schema / $defs / IndustryValuationItem / properties / symbol / descriptionRemoved value: -"Security symbol (transformed from `counter_id`)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `industry_valuation`. Wraps a `list` of industry peers.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / list / descriptionRemoved value: -"Peers in the same industry." - removed
Output schema / titleRemoved value: -"IndustryValuationResponse"
- Changed
industry_valuation_dist15 fields changed- removed
Output schema / $defs / IndustryValuationDistribution / descriptionRemoved value: -"One indicator's distribution stats in `industry_valuation_dist`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryValuationDistribution / properties / current_percentile / descriptionRemoved value: -"Where the stock currently sits in this distribution." - removed
Output schema / $defs / IndustryValuationDistribution / properties / max / descriptionRemoved value: -"Maximum value." - removed
Output schema / $defs / IndustryValuationDistribution / properties / median / descriptionRemoved value: -"Median." - removed
Output schema / $defs / IndustryValuationDistribution / properties / min / descriptionRemoved value: -"Minimum value." - removed
Output schema / $defs / IndustryValuationDistribution / properties / p25 / descriptionRemoved value: -"25th percentile." - removed
Output schema / $defs / IndustryValuationDistribution / properties / p75 / descriptionRemoved value: -"75th percentile." - removed
Output schema / $defs / IndustryValuationDistributions / descriptionRemoved value: -"`distributions` block of `industry_valuation_dist`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / IndustryValuationDistributions / properties / pb / descriptionRemoved value: -"Price-to-book distribution." - removed
Output schema / $defs / IndustryValuationDistributions / properties / pe / descriptionRemoved value: -"Price-to-earnings distribution." - removed
Output schema / $defs / IndustryValuationDistributions / properties / ps / descriptionRemoved value: -"Price-to-sales distribution." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `industry_valuation_dist`. Per-indicator distribution stats\ngrouped under `distributions`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / distributions / descriptionRemoved value: -"Per-indicator distribution blocks." - removed
Output schema / titleRemoved value: -"IndustryValuationDistResponse"
- Changed
institution_rating13 fields changed- removed
Output schema / $defs / InstitutionRatingAnalyst / descriptionRemoved value: -"Analyst consensus block of `institution_rating`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / buy / descriptionRemoved value: -"Number of analysts rating \"buy\"." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / consensus_rating / descriptionRemoved value: -"Consensus rating label." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / hold / descriptionRemoved value: -"Number of analysts rating \"hold\"." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / outperform / descriptionRemoved value: -"Number of analysts rating \"outperform\"." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / sell / descriptionRemoved value: -"Number of analysts rating \"sell\"." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / target_price / descriptionRemoved value: -"Consensus target price." - removed
Output schema / $defs / InstitutionRatingAnalyst / properties / underperform / descriptionRemoved value: -"Number of analysts rating \"underperform\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `institution_rating`.\n\nThe tool combines two upstream calls into\n`{\"analyst\": {...}, \"instratings\": [...]}`. Only the `analyst` fields are\ndocumented; the `instratings` payload shape is unspecified and left as raw\nJSON. Subset of documented fields; upstream may return more." - removed
Output schema / properties / analyst / descriptionRemoved value: -"Analyst rating consensus summary." - removed
Output schema / properties / instratings / descriptionRemoved value: -"Per-institution rating list. Shape is unspecified by the tool\ndescription; passed through as raw JSON." - removed
Output schema / titleRemoved value: -"InstitutionRatingResponse"
- Changed
institution_rating_detail12 fields changed- removed
Output schema / $defs / InstitutionRatingDetailItem / descriptionRemoved value: -"One per-institution record in `institution_rating_detail`'s `target.list`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / InstitutionRatingDetailItem / properties / analyst / descriptionRemoved value: -"Analyst name." - removed
Output schema / $defs / InstitutionRatingDetailItem / properties / firm / descriptionRemoved value: -"Issuing firm / institution name." - removed
Output schema / $defs / InstitutionRatingDetailItem / properties / rating / descriptionRemoved value: -"Rating label." - removed
Output schema / $defs / InstitutionRatingDetailItem / properties / target_price / descriptionRemoved value: -"Target price." - removed
Output schema / $defs / InstitutionRatingDetailItem / properties / timestamp / descriptionRemoved value: -"Rating timestamp (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / InstitutionRatingDetailTarget / descriptionRemoved value: -"`target` block of `institution_rating_detail`." - removed
Output schema / $defs / InstitutionRatingDetailTarget / properties / list / descriptionRemoved value: -"Per-institution rating records." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `institution_rating_detail`.\n\nDetailed historical institution ratings and target price history, grouped\nunder `target.list[]`. Subset of documented fields; upstream may return\nmore." - removed
Output schema / properties / target / descriptionRemoved value: -"Target-price / rating history container." - removed
Output schema / titleRemoved value: -"InstitutionRatingDetailResponse"
- Changed
institution_rating_history16 fields changed- removed
Output schema / $defs / EvaluateHistoryItem / descriptionRemoved value: -"One rating-evaluation change in `institution_rating_history`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / EvaluateHistoryItem / properties / date / descriptionRemoved value: -"Change date." - removed
Output schema / $defs / EvaluateHistoryItem / properties / firm / descriptionRemoved value: -"Issuing firm." - removed
Output schema / $defs / EvaluateHistoryItem / properties / new_rating / descriptionRemoved value: -"New rating." - removed
Output schema / $defs / EvaluateHistoryItem / properties / old_rating / descriptionRemoved value: -"Prior rating." - removed
Output schema / $defs / TargetHistoryItem / descriptionRemoved value: -"One target-price revision in `institution_rating_history`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / TargetHistoryItem / properties / analyst / descriptionRemoved value: -"Analyst name." - removed
Output schema / $defs / TargetHistoryItem / properties / date / descriptionRemoved value: -"Revision date." - removed
Output schema / $defs / TargetHistoryItem / properties / firm / descriptionRemoved value: -"Issuing firm." - removed
Output schema / $defs / TargetHistoryItem / properties / new_target / descriptionRemoved value: -"New target price." - removed
Output schema / $defs / TargetHistoryItem / properties / old_target / descriptionRemoved value: -"Prior target price." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `institution_rating_history`. Two history arrays: target-price\nrevisions and rating-evaluation changes.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / evaluate_history / descriptionRemoved value: -"Rating-evaluation changes." - removed
Output schema / properties / target_history / descriptionRemoved value: -"Target-price revisions." - removed
Output schema / titleRemoved value: -"InstitutionRatingHistoryResponse"
- Changed
institution_rating_industry_rank12 fields changed- removed
Output schema / $defs / InstitutionRatingIndustryRankItem / descriptionRemoved value: -"One peer in `institution_rating_industry_rank`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / buy_count / descriptionRemoved value: -"Buy rating count." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / consensus_rating / descriptionRemoved value: -"Consensus rating label." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / sell_count / descriptionRemoved value: -"Sell rating count." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / symbol / descriptionRemoved value: -"Security symbol (transformed from `counter_id`)." - removed
Output schema / $defs / InstitutionRatingIndustryRankItem / properties / target_price / descriptionRemoved value: -"Target price." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `institution_rating_industry_rank`. Peers ranked by analyst\nratings.\n\nThe tool description says `list[]`, while the implementation transforms a\ntop-level `items[]` array (rewriting `counter_id` → `symbol`). Both names\nare modelled so the schema matches whichever the upstream emits. Subset of\ndocumented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Ranked peers (key the implementation transforms in place)." - removed
Output schema / properties / list / descriptionRemoved value: -"Ranked peers (description's documented key)." - removed
Output schema / titleRemoved value: -"InstitutionRatingIndustryRankResponse"
- Changed
institutional_views12 fields changed- removed
Output schema / $defs / InstitutionalViewsMonth / descriptionRemoved value: -"One month in `institutional_views`'s `months`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / buy / descriptionRemoved value: -"Buy count." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / date / descriptionRemoved value: -"Month date (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / hold / descriptionRemoved value: -"Hold count." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / outperform / descriptionRemoved value: -"Outperform count." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / sell / descriptionRemoved value: -"Sell count." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / total / descriptionRemoved value: -"Total ratings." - removed
Output schema / $defs / InstitutionalViewsMonth / properties / underperform / descriptionRemoved value: -"Underperform count." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `institutional_views`. Wraps a `months` array of monthly\nrating-distribution snapshots.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / months / descriptionRemoved value: -"Monthly rating-distribution snapshots." - removed
Output schema / titleRemoved value: -"InstitutionalViewsResponse"
- Changed
invest_relation10 fields changed- removed
Output schema / $defs / InvestRelationItem / descriptionRemoved value: -"One event in `invest_relation`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / InvestRelationItem / properties / descriptionRemoved value: -{ - "description": "Free-text description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / InvestRelationItem / properties / event_date / descriptionRemoved value: -"Event date." - removed
Output schema / $defs / InvestRelationItem / properties / event_type / descriptionRemoved value: -"Event type." - removed
Output schema / $defs / InvestRelationItem / properties / titleRemoved value: -{ - "description": "Event title.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / InvestRelationItem / properties / url / descriptionRemoved value: -"Related URL." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `invest_relation`. Wraps an `items` array of IR events.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Investor-relations events and announcements." - removed
Output schema / titleRemoved value: -"InvestRelationResponse"
- Changed
ipo_calendar14 fields changed- removed
Output schema / $defs / IpoItem / descriptionRemoved value: -"A single IPO entry as it appears in the subscription / calendar / listed\nfeeds. Subset of the upstream item; field availability varies by feed and\nmarket. Numeric/price fields are stringified by the transform pipeline." - removed
Output schema / $defs / IpoItem / properties / issue_price / descriptionRemoved value: -"Issue price (stringified decimal)." - removed
Output schema / $defs / IpoItem / properties / listing_date / descriptionRemoved value: -"Listing date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / market / descriptionRemoved value: -"Market code, e.g. \"HK\" / \"US\"." - removed
Output schema / $defs / IpoItem / properties / min_lot_size / descriptionRemoved value: -"Minimum lot size for subscription." - removed
Output schema / $defs / IpoItem / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / IpoItem / properties / status / descriptionRemoved value: -"IPO status (calendar feed), e.g. upcoming / listed." - removed
Output schema / $defs / IpoItem / properties / sub_end_date / descriptionRemoved value: -"Subscription window end date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / sub_start_date / descriptionRemoved value: -"Subscription window start date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\" or \"ARM.US\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_calendar`. Passthrough of the upstream calendar payload;\nthe documented portion is `items[]`. The upstream `timestamp` is converted\nto RFC3339 by the unix-path transform." - removed
Output schema / properties / items / descriptionRemoved value: -"Calendar entries for upcoming and recent IPOs." - removed
Output schema / titleRemoved value: -"IpoCalendarResponse"
- Changed
ipo_detail6 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_detail`. The tool combines three upstream payloads\n(`profile`, `timeline`, `eligibility`) under one wrapper object. Each part\nis a passthrough; only the documented portions are typed here." - removed
Output schema / properties / eligibility / descriptionRemoved value: -"Subscription eligibility payload (passthrough, shape upstream-defined)." - removed
Output schema / properties / profile / descriptionRemoved value: -"Business overview / profile payload (passthrough, shape upstream-defined)." - removed
Output schema / properties / timeline / descriptionRemoved value: -"Timeline events. The upstream payload may wrap this differently; the\ndocumented portion is a list of `{event, date}` entries." - removed
Output schema / titleRemoved value: -"IpoDetailResponse"
- Changed
ipo_listed16 fields changed- removed
Output schema / $defs / IpoListedItem / descriptionRemoved value: -"A single recently-listed IPO entry. Subset of upstream fields; numeric and\nprice fields are stringified by the transform pipeline." - removed
Output schema / $defs / IpoListedItem / properties / first_day_close / descriptionRemoved value: -"First-day close price (stringified decimal)." - removed
Output schema / $defs / IpoListedItem / properties / first_day_return / descriptionRemoved value: -"First-day return (stringified decimal / percentage)." - removed
Output schema / $defs / IpoListedItem / properties / issue_price / descriptionRemoved value: -"Issue price (stringified decimal)." - removed
Output schema / $defs / IpoListedItem / properties / listing_date / descriptionRemoved value: -"Listing date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoListedItem / properties / market / descriptionRemoved value: -"Market code, e.g. \"HK\" / \"US\"." - removed
Output schema / $defs / IpoListedItem / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / IpoListedItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\"." - removed
Output schema / $defs / IpoListedItem / properties / volume / descriptionRemoved value: -"First-day trading volume." - removed
Output schema / $defs / IpoListedMarketFeed / descriptionRemoved value: -"One side (HK or US) of the listed feed. The documented portion is `items[]`." - removed
Output schema / $defs / IpoListedMarketFeed / properties / items / descriptionRemoved value: -"Recently-listed IPO entries (documented subset of upstream fields)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_listed`. HK and US listed feeds combined under a\n`{hk, us}` wrapper object built by the tool." - removed
Output schema / properties / hk / descriptionRemoved value: -"Hong Kong recently-listed feed." - removed
Output schema / properties / us / descriptionRemoved value: -"US recently-listed feed." - removed
Output schema / titleRemoved value: -"IpoListedResponse"
- Changed
ipo_order_detail11 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_order_detail`. Passthrough of a single IPO order; the\ndocumented subset is typed here. Amount fields are stringified decimals and\n`submitted_at` is RFC3339." - removed
Output schema / properties / allotted_quantity / descriptionRemoved value: -"Allotted quantity after the IPO drawing." - removed
Output schema / properties / market / descriptionRemoved value: -"Market code, e.g. \"HK\" / \"US\"." - removed
Output schema / properties / order_id / descriptionRemoved value: -"IPO order ID." - removed
Output schema / properties / quantity / descriptionRemoved value: -"Subscription quantity." - removed
Output schema / properties / status / descriptionRemoved value: -"Order status." - removed
Output schema / properties / submitted_at / descriptionRemoved value: -"Order submission time (RFC3339)." - removed
Output schema / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\"." - removed
Output schema / properties / total_amount / descriptionRemoved value: -"Total subscription amount (stringified decimal)." - removed
Output schema / titleRemoved value: -"IpoOrderDetailResponse"
- Changed
ipo_orders15 fields changed- removed
Output schema / $defs / IpoOrderItem / descriptionRemoved value: -"A single IPO order entry. Subset of upstream fields; amount fields are\nstringified by the transform pipeline and `submitted_at` is RFC3339." - removed
Output schema / $defs / IpoOrderItem / properties / market / descriptionRemoved value: -"Market code, e.g. \"HK\" / \"US\"." - removed
Output schema / $defs / IpoOrderItem / properties / order_id / descriptionRemoved value: -"IPO order ID." - removed
Output schema / $defs / IpoOrderItem / properties / quantity / descriptionRemoved value: -"Subscription quantity." - removed
Output schema / $defs / IpoOrderItem / properties / status / descriptionRemoved value: -"Order status." - removed
Output schema / $defs / IpoOrderItem / properties / submitted_at / descriptionRemoved value: -"Order submission time (RFC3339)." - removed
Output schema / $defs / IpoOrderItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\"." - removed
Output schema / $defs / IpoOrderItem / properties / total_amount / descriptionRemoved value: -"Total subscription amount (stringified decimal)." - removed
Output schema / $defs / IpoOrdersFeed / descriptionRemoved value: -"One side of the IPO orders feed (active or historical). The documented\nportion is `orders[]`." - removed
Output schema / $defs / IpoOrdersFeed / properties / orders / descriptionRemoved value: -"IPO order entries (documented subset of upstream fields)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_orders`. Active orders and order history combined under an\n`{orders, history}` wrapper object built by the tool." - removed
Output schema / properties / history / descriptionRemoved value: -"Historical IPO orders feed." - removed
Output schema / properties / orders / descriptionRemoved value: -"Active IPO orders feed." - removed
Output schema / titleRemoved value: -"IpoOrdersResponse"
- Changed
ipo_profit_loss16 fields changed- removed
Output schema / $defs / IpoProfitLossItem / descriptionRemoved value: -"A single per-stock IPO profit/loss breakdown item. Subset of upstream\nfields; monetary and rate fields are stringified by the transform pipeline." - removed
Output schema / $defs / IpoProfitLossItem / properties / cost / descriptionRemoved value: -"Cost basis for this stock (stringified decimal)." - removed
Output schema / $defs / IpoProfitLossItem / properties / current_value / descriptionRemoved value: -"Current market value for this stock (stringified decimal)." - removed
Output schema / $defs / IpoProfitLossItem / properties / return_rate / descriptionRemoved value: -"Return rate for this stock (stringified decimal / percentage)." - removed
Output schema / $defs / IpoProfitLossItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\"." - removed
Output schema / $defs / IpoProfitLossItems / descriptionRemoved value: -"The items side of the IPO profit/loss feed. The documented portion is\n`items[]`." - removed
Output schema / $defs / IpoProfitLossItems / properties / items / descriptionRemoved value: -"Per-stock profit/loss breakdown entries." - removed
Output schema / $defs / IpoProfitLossSummary / descriptionRemoved value: -"The summary side of the IPO profit/loss feed. Documented totals are\nstringified decimals." - removed
Output schema / $defs / IpoProfitLossSummary / properties / total_cost / descriptionRemoved value: -"Total cost across all IPO holdings (stringified decimal)." - removed
Output schema / $defs / IpoProfitLossSummary / properties / total_return / descriptionRemoved value: -"Total return across all IPO holdings (stringified decimal)." - removed
Output schema / $defs / IpoProfitLossSummary / properties / total_value / descriptionRemoved value: -"Total current value across all IPO holdings (stringified decimal)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_profit_loss`. Summary and per-stock breakdown combined\nunder a `{summary, items}` wrapper object built by the tool." - removed
Output schema / properties / items / descriptionRemoved value: -"Per-stock breakdown items." - removed
Output schema / properties / summary / descriptionRemoved value: -"Aggregate cost/value/return totals." - removed
Output schema / titleRemoved value: -"IpoProfitLossResponse"
- Changed
ipo_subscriptions17 fields changed- removed
Output schema / $defs / IpoItem / descriptionRemoved value: -"A single IPO entry as it appears in the subscription / calendar / listed\nfeeds. Subset of the upstream item; field availability varies by feed and\nmarket. Numeric/price fields are stringified by the transform pipeline." - removed
Output schema / $defs / IpoItem / properties / issue_price / descriptionRemoved value: -"Issue price (stringified decimal)." - removed
Output schema / $defs / IpoItem / properties / listing_date / descriptionRemoved value: -"Listing date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / market / descriptionRemoved value: -"Market code, e.g. \"HK\" / \"US\"." - removed
Output schema / $defs / IpoItem / properties / min_lot_size / descriptionRemoved value: -"Minimum lot size for subscription." - removed
Output schema / $defs / IpoItem / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / IpoItem / properties / status / descriptionRemoved value: -"IPO status (calendar feed), e.g. upcoming / listed." - removed
Output schema / $defs / IpoItem / properties / sub_end_date / descriptionRemoved value: -"Subscription window end date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / sub_start_date / descriptionRemoved value: -"Subscription window start date (yyyy-mm-dd)." - removed
Output schema / $defs / IpoItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"6871.HK\" or \"ARM.US\"." - removed
Output schema / $defs / IpoMarketFeed / descriptionRemoved value: -"One side (HK or US) of an IPO feed that splits results by market. Each side\nis the raw upstream payload; the documented portion is `items[]`." - removed
Output schema / $defs / IpoMarketFeed / properties / items / descriptionRemoved value: -"IPO entries for this market (documented subset of upstream fields)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `ipo_subscriptions`. HK and US subscription feeds combined under\na `{hk, us}` wrapper object built by the tool." - removed
Output schema / properties / hk / descriptionRemoved value: -"Hong Kong subscription / pre-filing feed." - removed
Output schema / properties / us / descriptionRemoved value: -"US subscription / pre-filing feed." - removed
Output schema / titleRemoved value: -"IpoSubscriptionsResponse"
- Changed
margin_ratio6 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `margin_ratio`.\n\nDecimals are stringified by `to_tool_json`." - removed
Output schema / properties / fm_factor / descriptionRemoved value: -"Forced close-out margin ratio (`fm_factor`)." - removed
Output schema / properties / im_factor / descriptionRemoved value: -"Initial-margin ratio (`im_factor`)." - removed
Output schema / properties / mm_factor / descriptionRemoved value: -"Maintenance-margin ratio (`mm_factor`)." - removed
Output schema / titleRemoved value: -"MarginRatioResponse"
- Changed
market_status9 fields changed- removed
Output schema / $defs / MarketStatusEntry / properties / delay_timestamp / descriptionRemoved value: -"Delayed-quote status timestamp (RFC3339)." - removed
Output schema / $defs / MarketStatusEntry / properties / delay_trade_status / descriptionRemoved value: -"Delayed-quote trading status label (same value set as `trade_status`)." - removed
Output schema / $defs / MarketStatusEntry / properties / market / descriptionRemoved value: -"Market code, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\"." - removed
Output schema / $defs / MarketStatusEntry / properties / timestamp / descriptionRemoved value: -"Status snapshot timestamp (RFC3339)." - removed
Output schema / $defs / MarketStatusEntry / properties / trade_status / descriptionRemoved value: -"Trading status label, e.g. Trading / Closed / Mid-Day Break /\nPre-Market / Post-Market / Overnight / Unknown." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `market_status`. Wraps a `market_time` array, one entry per\nmarket. Subset of the wire response — `trade_status` is mapped from the\nupstream numeric code to a human label, and `timestamp` is converted to\nRFC3339." - removed
Output schema / properties / market_time / descriptionRemoved value: -"Per-market trading status entries." - removed
Output schema / titleRemoved value: -"MarketStatusResponse"
- Changed
market_temperature8 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `market_temperature`." - removed
Output schema / properties / descriptionRemoved value: -{ - "description": "Human-readable temperature description (locale-aware).", - "type": "string" -} - removed
Output schema / properties / sentiment / descriptionRemoved value: -"Market sentiment indicator (0-100)." - removed
Output schema / properties / temperature / descriptionRemoved value: -"Temperature value (0-100)." - removed
Output schema / properties / timestamp / descriptionRemoved value: -"Snapshot timestamp (RFC3339)." - removed
Output schema / properties / valuation / descriptionRemoved value: -"Market valuation indicator (0-100)." - removed
Output schema / titleRemoved value: -"MarketTemperatureResponse"
- Changed
operating9 fields changed- removed
Output schema / $defs / OperatingItem / descriptionRemoved value: -"One record in `operating`'s `items`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / OperatingItem / properties / metric_name / descriptionRemoved value: -"Metric name (e.g. passenger traffic, cargo volume)." - removed
Output schema / $defs / OperatingItem / properties / period / descriptionRemoved value: -"Reporting period." - removed
Output schema / $defs / OperatingItem / properties / unit / descriptionRemoved value: -"Unit of measure." - removed
Output schema / $defs / OperatingItem / properties / value / descriptionRemoved value: -"Metric value." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `operating`. Wraps an `items` array of operating metrics\n(HK stocks only).\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / items / descriptionRemoved value: -"Operating metric records." - removed
Output schema / titleRemoved value: -"OperatingResponse"
- Changed
order_detail28 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `order_detail`. Single order with full lifecycle metadata." - removed
Output schema / properties / currency / descriptionRemoved value: -"Settlement currency." - removed
Output schema / properties / executed_price / descriptionRemoved value: -"Volume-weighted average executed price (null when unfilled)." - removed
Output schema / properties / executed_quantity / descriptionRemoved value: -"Quantity already executed." - removed
Output schema / properties / expire_date / descriptionRemoved value: -"GTD expiry date (yyyy-mm-dd)." - removed
Output schema / properties / last_done / descriptionRemoved value: -"Latest price snapshot at order time (null if missing)." - removed
Output schema / properties / limit_offset / descriptionRemoved value: -"Trailing-stop limit offset (TSLPAMT/TSLPPCT)." - removed
Output schema / properties / msg / descriptionRemoved value: -"Reject message or remark." - removed
Output schema / properties / order_id / descriptionRemoved value: -"Order ID." - removed
Output schema / properties / order_type / descriptionRemoved value: -"Order type enum, e.g. `LO`, `MO`, `LIT`." - removed
Output schema / properties / outside_rth / descriptionRemoved value: -"Outside-RTH setting: `RTH_ONLY` / `ANY_TIME` / `OVERNIGHT`." - removed
Output schema / properties / price / descriptionRemoved value: -"Submitted limit price (null for market orders)." - removed
Output schema / properties / quantity / descriptionRemoved value: -"Submitted quantity." - removed
Output schema / properties / side / descriptionRemoved value: -"Buy or Sell." - removed
Output schema / properties / status / descriptionRemoved value: -"Status enum (e.g. `Filled`, `WaitToNew`, `Canceled`)." - removed
Output schema / properties / stock_name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / properties / submitted_at / descriptionRemoved value: -"Order submission time (RFC3339)." - removed
Output schema / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"700.HK\"." - removed
Output schema / properties / tag / descriptionRemoved value: -"Order tag (e.g. `Normal`, `LongTerm`)." - removed
Output schema / properties / time_in_force / descriptionRemoved value: -"Time-in-force: `Day` / `GTC` / `GTD`." - removed
Output schema / properties / trailing_amount / descriptionRemoved value: -"Trailing-stop trail amount (TSLPAMT)." - removed
Output schema / properties / trailing_percent / descriptionRemoved value: -"Trailing-stop trail percent (TSLPPCT, decimal)." - removed
Output schema / properties / trigger_at / descriptionRemoved value: -"Conditional-order trigger time (RFC3339)." - removed
Output schema / properties / trigger_price / descriptionRemoved value: -"Trigger price for LIT/MIT/trailing orders." - removed
Output schema / properties / trigger_status / descriptionRemoved value: -"Trigger status, e.g. `Deactive` / `Active` / `Released`." - removed
Output schema / properties / updated_at / descriptionRemoved value: -"Last update time (RFC3339)." - removed
Output schema / titleRemoved value: -"OrderDetailResponse"
- Changed
rank_categories10 fields changed- removed
Output schema / $defs / RankFirstTag / properties / key / descriptionRemoved value: -"Category key." - removed
Output schema / $defs / RankFirstTag / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / RankFirstTag / properties / second_tags / descriptionRemoved value: -"Sub-categories. Pass a `second_tags[].key` to `rank_list`." - removed
Output schema / $defs / RankSecondTag / properties / key / descriptionRemoved value: -"Tab key to pass to `rank_list` (e.g. \"hot_all-us\")." - removed
Output schema / $defs / RankSecondTag / properties / market / descriptionRemoved value: -"Market this tab covers, e.g. \"US\" / \"HK\"." - removed
Output schema / $defs / RankSecondTag / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `rank_categories`. Wraps a `first_tags` array of rank tab\ncategory configurations for the popularity leaderboard. Subset of the wire\nresponse." - removed
Output schema / properties / first_tags / descriptionRemoved value: -"Top-level rank category tags." - removed
Output schema / titleRemoved value: -"RankCategoriesResponse"
- Changed
rank_list22 fields changed- removed
Output schema / $defs / RankListItem / properties / amplitude / descriptionRemoved value: -"Intraday amplitude." - removed
Output schema / $defs / RankListItem / properties / chg / descriptionRemoved value: -"Price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / five_day_chg / descriptionRemoved value: -"5-day price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / industry / descriptionRemoved value: -"Industry/sector name." - removed
Output schema / $defs / RankListItem / properties / inflow / descriptionRemoved value: -"Net capital inflow." - removed
Output schema / $defs / RankListItem / properties / intro / descriptionRemoved value: -"Short company introduction." - removed
Output schema / $defs / RankListItem / properties / last_done / descriptionRemoved value: -"Latest traded price." - removed
Output schema / $defs / RankListItem / properties / market_cap / descriptionRemoved value: -"Total market capitalization." - removed
Output schema / $defs / RankListItem / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / RankListItem / properties / pre_post_chg / descriptionRemoved value: -"Pre-/post-market price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / pre_post_price / descriptionRemoved value: -"Pre-/post-market price." - removed
Output schema / $defs / RankListItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"700.HK\"." - removed
Output schema / $defs / RankListItem / properties / ten_day_chg / descriptionRemoved value: -"10-day price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / this_year_chg / descriptionRemoved value: -"Year-to-date price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / turnover_rate / descriptionRemoved value: -"Turnover rate." - removed
Output schema / $defs / RankListItem / properties / twenty_day_chg / descriptionRemoved value: -"20-day price change (decimal ratio)." - removed
Output schema / $defs / RankListItem / properties / volume_rate / descriptionRemoved value: -"Volume ratio versus average." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `rank_list`. Wraps a `lists` array of ranked stocks for a\nleaderboard tab, plus a refresh time. Subset of the wire response." - removed
Output schema / properties / lists / descriptionRemoved value: -"Ranked stock entries." - removed
Output schema / properties / updated_at / descriptionRemoved value: -"Last refresh time (RFC3339)." - removed
Output schema / titleRemoved value: -"RankListResponse"
- Changed
screener_indicators17 fields changed- removed
Output schema / $defs / ScreenerIndicator / descriptionRemoved value: -"A single screener indicator's metadata. The `filter_` prefix is stripped\nfrom `key` by the tool. `tech_values`, when present, is a synthesized schema\n(`{tech_key: [{value, label}, ...]}`) describing the options a technical\nindicator accepts." - removed
Output schema / $defs / ScreenerIndicator / properties / default_range / descriptionRemoved value: -"Default value range for the indicator." - removed
Output schema / $defs / ScreenerIndicator / properties / id / descriptionRemoved value: -"Indicator ID." - removed
Output schema / $defs / ScreenerIndicator / properties / key / descriptionRemoved value: -"Indicator key (without the `filter_` prefix)." - removed
Output schema / $defs / ScreenerIndicator / properties / name / descriptionRemoved value: -"Indicator display name." - removed
Output schema / $defs / ScreenerIndicator / properties / tech_values / descriptionRemoved value: -"For technical indicators: synthesized schema of accepted option values,\nkeyed by technical sub-key, each mapping to a list of `{value, label}`." - removed
Output schema / $defs / ScreenerIndicator / properties / unit / descriptionRemoved value: -"Value unit, where applicable." - removed
Output schema / $defs / ScreenerIndicatorGroup / descriptionRemoved value: -"A named group of screener indicators." - removed
Output schema / $defs / ScreenerIndicatorGroup / properties / group_name / descriptionRemoved value: -"Group display name." - removed
Output schema / $defs / ScreenerIndicatorGroup / properties / indicators / descriptionRemoved value: -"Indicators in this group." - removed
Output schema / $defs / ScreenerIndicatorRange / descriptionRemoved value: -"Default value range for a screener indicator." - removed
Output schema / $defs / ScreenerIndicatorRange / properties / max / descriptionRemoved value: -"Default upper bound (string)." - removed
Output schema / $defs / ScreenerIndicatorRange / properties / min / descriptionRemoved value: -"Default lower bound (string)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `screener_indicators`. Documented portion is `groups[]`." - removed
Output schema / properties / groups / descriptionRemoved value: -"Indicator metadata grouped by category." - removed
Output schema / titleRemoved value: -"ScreenerIndicatorsResponse"
- Changed
screener_recommend_strategies11 fields changed- removed
Output schema / $defs / ScreenerStrategyItem / descriptionRemoved value: -"A single screener strategy entry. Subset of upstream fields; the change\nfigure is stringified by the transform pipeline." - removed
Output schema / $defs / ScreenerStrategyItem / properties / descriptionRemoved value: -{ - "description": "Strategy description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / ScreenerStrategyItem / properties / id / descriptionRemoved value: -"Strategy ID. Pass to `screener_search` `strategy_id` to run, or to\n`screener_strategy` to inspect the filter conditions." - removed
Output schema / $defs / ScreenerStrategyItem / properties / market / descriptionRemoved value: -"Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\"." - removed
Output schema / $defs / ScreenerStrategyItem / properties / name / descriptionRemoved value: -"Strategy display name." - removed
Output schema / $defs / ScreenerStrategyItem / properties / risk / descriptionRemoved value: -"Risk classification label." - removed
Output schema / $defs / ScreenerStrategyItem / properties / three_months_chg / descriptionRemoved value: -"Trailing three-month change (stringified decimal / percentage)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `screener_recommend_strategies` and `screener_user_strategies`.\nThe documented portion is `strategys[]`." - removed
Output schema / properties / strategys / descriptionRemoved value: -"Screener strategies (note the upstream `strategys` spelling)." - removed
Output schema / titleRemoved value: -"ScreenerStrategiesResponse"
- Changed
screener_search14 fields changed- removed
Output schema / $defs / ScreenerResultIndicator / descriptionRemoved value: -"A single indicator value attached to a screener search result row. The\n`filter_` prefix is stripped from `key` by the tool." - removed
Output schema / $defs / ScreenerResultIndicator / properties / key / descriptionRemoved value: -"Indicator key (without the `filter_` prefix)." - removed
Output schema / $defs / ScreenerResultIndicator / properties / name / descriptionRemoved value: -"Indicator display name." - removed
Output schema / $defs / ScreenerResultIndicator / properties / unit / descriptionRemoved value: -"Value unit, where applicable." - removed
Output schema / $defs / ScreenerResultIndicator / properties / value / descriptionRemoved value: -"Indicator value (stringified by the transform pipeline)." - removed
Output schema / $defs / ScreenerResultItem / descriptionRemoved value: -"A single screener search result row. Subset of upstream fields." - removed
Output schema / $defs / ScreenerResultItem / properties / indicators / descriptionRemoved value: -"Per-indicator values for this row (condition + extra-return columns)." - removed
Output schema / $defs / ScreenerResultItem / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / ScreenerResultItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"AAPL.US\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `screener_search`. Documented portion is `total` plus the\n`items[]` result rows." - removed
Output schema / properties / items / descriptionRemoved value: -"Result rows for the current page." - removed
Output schema / properties / total / descriptionRemoved value: -"Total number of matching securities." - removed
Output schema / titleRemoved value: -"ScreenerSearchResponse"
- Changed
screener_strategy12 fields changed- removed
Output schema / $defs / ScreenerStrategyFilter / descriptionRemoved value: -"A single filter condition within a screener strategy. The `filter_` prefix\nis stripped from `key` by the tool so it matches `screener_indicators` and\n`screener_search` condition input." - removed
Output schema / $defs / ScreenerStrategyFilter / properties / key / descriptionRemoved value: -"Indicator key (without the `filter_` prefix)." - removed
Output schema / $defs / ScreenerStrategyFilter / properties / max / descriptionRemoved value: -"Upper bound for the condition (string, may be empty)." - removed
Output schema / $defs / ScreenerStrategyFilter / properties / min / descriptionRemoved value: -"Lower bound for the condition (string, may be empty)." - removed
Output schema / $defs / ScreenerStrategyFilter / properties / tech_values / descriptionRemoved value: -"Technical-indicator value selection for technical keys. Passthrough\nobject whose shape depends on the indicator (see `screener_indicators`)." - removed
Output schema / $defs / ScreenerStrategyFilterGroup / descriptionRemoved value: -"The `filter` wrapper of a screener strategy, holding the condition list." - removed
Output schema / $defs / ScreenerStrategyFilterGroup / properties / filters / descriptionRemoved value: -"Filter conditions making up the strategy." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `screener_strategy`. Documented portion is `market` plus the\n`filter.filters[]` condition list." - removed
Output schema / properties / filter / descriptionRemoved value: -"Filter group containing the strategy's conditions." - removed
Output schema / properties / market / descriptionRemoved value: -"Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\"." - removed
Output schema / titleRemoved value: -"ScreenerStrategyResponse"
- Changed
screener_user_strategies11 fields changed- removed
Output schema / $defs / ScreenerStrategyItem / descriptionRemoved value: -"A single screener strategy entry. Subset of upstream fields; the change\nfigure is stringified by the transform pipeline." - removed
Output schema / $defs / ScreenerStrategyItem / properties / descriptionRemoved value: -{ - "description": "Strategy description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / ScreenerStrategyItem / properties / id / descriptionRemoved value: -"Strategy ID. Pass to `screener_search` `strategy_id` to run, or to\n`screener_strategy` to inspect the filter conditions." - removed
Output schema / $defs / ScreenerStrategyItem / properties / market / descriptionRemoved value: -"Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\"." - removed
Output schema / $defs / ScreenerStrategyItem / properties / name / descriptionRemoved value: -"Strategy display name." - removed
Output schema / $defs / ScreenerStrategyItem / properties / risk / descriptionRemoved value: -"Risk classification label." - removed
Output schema / $defs / ScreenerStrategyItem / properties / three_months_chg / descriptionRemoved value: -"Trailing three-month change (stringified decimal / percentage)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `screener_recommend_strategies` and `screener_user_strategies`.\nThe documented portion is `strategys[]`." - removed
Output schema / properties / strategys / descriptionRemoved value: -"Screener strategies (note the upstream `strategys` spelling)." - removed
Output schema / titleRemoved value: -"ScreenerStrategiesResponse"
- Changed
security_list11 fields changed- removed
Output schema / $defs / SecurityListItem / properties / name_cn / descriptionRemoved value: -"Security name (zh-CN)." - removed
Output schema / $defs / SecurityListItem / properties / name_en / descriptionRemoved value: -"Security name (en)." - removed
Output schema / $defs / SecurityListItem / properties / name_hk / descriptionRemoved value: -"Security name (zh-HK)." - removed
Output schema / $defs / SecurityListItem / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"AAPL.US\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `security_list`. Top-level pagination envelope built in\n`quote::security_list` around the upstream `Vec<Security>`." - removed
Output schema / properties / count / descriptionRemoved value: -"Records-per-page echoed back from the request." - removed
Output schema / properties / items / descriptionRemoved value: -"The securities on this page." - removed
Output schema / properties / page / descriptionRemoved value: -"1-based page number echoed back from the request." - removed
Output schema / properties / total / descriptionRemoved value: -"Total number of securities available for this market/category (before\npagination)." - removed
Output schema / titleRemoved value: -"SecurityListResponse"
- Changed
shareholder11 fields changed- removed
Output schema / $defs / ShareholderItem / descriptionRemoved value: -"One holder in `shareholder`'s `shareholders`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ShareholderItem / properties / change / descriptionRemoved value: -"Change in shares." - removed
Output schema / $defs / ShareholderItem / properties / change_type / descriptionRemoved value: -"Direction / kind of change." - removed
Output schema / $defs / ShareholderItem / properties / institution / descriptionRemoved value: -"Institution name." - removed
Output schema / $defs / ShareholderItem / properties / ratio / descriptionRemoved value: -"Ownership ratio." - removed
Output schema / $defs / ShareholderItem / properties / reported_at / descriptionRemoved value: -"Report date." - removed
Output schema / $defs / ShareholderItem / properties / shares / descriptionRemoved value: -"Shares held." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `shareholder`. Wraps a `shareholders` array.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / shareholders / descriptionRemoved value: -"Institutional shareholders." - removed
Output schema / titleRemoved value: -"ShareholderResponse"
- Changed
shareholder_detail22 fields changed- removed
Output schema / $defs / ShareholderTrading / descriptionRemoved value: -"One per-period trading record in `shareholder_detail`'s `tradings`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ShareholderTrading / properties / accum_buy / descriptionRemoved value: -"Accumulated buys." - removed
Output schema / $defs / ShareholderTrading / properties / accum_sell / descriptionRemoved value: -"Accumulated sells." - removed
Output schema / $defs / ShareholderTrading / properties / net_buy / descriptionRemoved value: -"Net buys." - removed
Output schema / $defs / ShareholderTrading / properties / period / descriptionRemoved value: -"Reporting period." - removed
Output schema / $defs / ShareholderTrading / properties / trading_details / descriptionRemoved value: -"Individual trades. Empty for institutional (13F) holders; populated\nonly for insider / individual filers (Form 4)." - removed
Output schema / $defs / ShareholderTradingDetail / descriptionRemoved value: -"One trade in `shareholder_detail`'s `trading_details`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ShareholderTradingDetail / properties / filing_date / descriptionRemoved value: -"Filing date." - removed
Output schema / $defs / ShareholderTradingDetail / properties / security_type / descriptionRemoved value: -"Security type." - removed
Output schema / $defs / ShareholderTradingDetail / properties / trading_date / descriptionRemoved value: -"Trade date." - removed
Output schema / $defs / ShareholderTradingDetail / properties / trading_price / descriptionRemoved value: -"Trade price." - removed
Output schema / $defs / ShareholderTradingDetail / properties / trading_shares / descriptionRemoved value: -"Number of shares traded." - removed
Output schema / $defs / ShareholderTradingDetail / properties / trading_type / descriptionRemoved value: -"Trade type (buy / sell)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `shareholder_detail`. A single holder's holding and trade\nhistory.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / holding_periods / descriptionRemoved value: -"Holding periods. Shape unspecified by the description; raw JSON." - removed
Output schema / properties / holding_summary / descriptionRemoved value: -"Holding summary. Shape unspecified by the description; raw JSON." - removed
Output schema / properties / name / descriptionRemoved value: -"Holder name." - removed
Output schema / properties / owner_source / descriptionRemoved value: -"Holder source: Company / Institution / Person / Insider." - removed
Output schema / properties / trading_periods / descriptionRemoved value: -"Trading periods. Shape unspecified by the description; raw JSON." - removed
Output schema / properties / tradings / descriptionRemoved value: -"Per-period trading records." - removed
Output schema / titleRemoved value: -"ShareholderDetailResponse"
- Changed
shareholder_top15 fields changed- removed
Output schema / $defs / ShareholderTopHolder / descriptionRemoved value: -"One holder in `shareholder_top`'s `share_holders`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ShareholderTopHolder / properties / filing_date / descriptionRemoved value: -"Filing date." - removed
Output schema / $defs / ShareholderTopHolder / properties / name / descriptionRemoved value: -"Holder name." - removed
Output schema / $defs / ShareholderTopHolder / properties / object_id / descriptionRemoved value: -"Holder object id. Pass to `shareholder_detail`." - removed
Output schema / $defs / ShareholderTopHolder / properties / percent_shares_held / descriptionRemoved value: -"Percentage of shares held." - removed
Output schema / $defs / ShareholderTopHolder / properties / shares_changed / descriptionRemoved value: -"Change in shares held." - removed
Output schema / $defs / ShareholderTopHolder / properties / shares_held / descriptionRemoved value: -"Shares held." - removed
Output schema / $defs / ShareholderTopHolder / properties / titleRemoved value: -{ - "description": "Holder title / role.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / ShareholderTopPeriod / descriptionRemoved value: -"One period snapshot in `shareholder_top`'s `info`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ShareholderTopPeriod / properties / period / descriptionRemoved value: -"Reporting period." - removed
Output schema / $defs / ShareholderTopPeriod / properties / share_holders / descriptionRemoved value: -"Holders for this period." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `shareholder_top`. Wraps an `info` array of per-period\nsnapshots, each with a `share_holders` list.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / info / descriptionRemoved value: -"Per-period holder snapshots." - removed
Output schema / titleRemoved value: -"ShareholderTopResponse"
- Changed
sharelist_create6 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `sharelist_create`. The created sharelist object; documented\nfields are `id`, `name`, and `description`." - removed
Output schema / properties / descriptionRemoved value: -{ - "description": "List description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / id / descriptionRemoved value: -"Newly-created sharelist ID." - removed
Output schema / properties / name / descriptionRemoved value: -"List name." - removed
Output schema / titleRemoved value: -"SharelistCreateResponse"
- Changed
sharelist_detail12 fields changed- removed
Output schema / $defs / SharelistConstituent / descriptionRemoved value: -"A single constituent of a sharelist detail. Subset of upstream fields;\nquote fields are stringified by the transform pipeline." - removed
Output schema / $defs / SharelistConstituent / properties / change_rate / descriptionRemoved value: -"Change rate (stringified decimal / percentage)." - removed
Output schema / $defs / SharelistConstituent / properties / last_done / descriptionRemoved value: -"Latest traded price (stringified decimal)." - removed
Output schema / $defs / SharelistConstituent / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / SharelistConstituent / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"AAPL.US\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `sharelist_detail`. Subset of the upstream detail payload: list\nmetadata plus the constituent rows. Additional quote and subscription\nfields may be present but are not enumerated here." - removed
Output schema / properties / constituents / descriptionRemoved value: -"Constituent securities with quote snapshots." - removed
Output schema / properties / descriptionRemoved value: -{ - "description": "List description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / id / descriptionRemoved value: -"Sharelist ID." - removed
Output schema / properties / name / descriptionRemoved value: -"List name." - removed
Output schema / titleRemoved value: -"SharelistDetailResponse"
- Changed
sharelist_list12 fields changed- removed
Output schema / $defs / SharelistSummary / descriptionRemoved value: -"A single sharelist summary entry. Subset of upstream fields." - removed
Output schema / $defs / SharelistSummary / properties / creator / descriptionRemoved value: -"Creator info (`sharelist_popular` only); passthrough, shape\nupstream-defined." - removed
Output schema / $defs / SharelistSummary / properties / descriptionRemoved value: -{ - "description": "List description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / SharelistSummary / properties / follower_count / descriptionRemoved value: -"Number of followers / subscribers of this list." - removed
Output schema / $defs / SharelistSummary / properties / id / descriptionRemoved value: -"Sharelist ID." - removed
Output schema / $defs / SharelistSummary / properties / is_owner / descriptionRemoved value: -"Whether the current user owns this list (`sharelist_list` only)." - removed
Output schema / $defs / SharelistSummary / properties / name / descriptionRemoved value: -"List name." - removed
Output schema / $defs / SharelistSummary / properties / symbol_count / descriptionRemoved value: -"Number of securities in the list." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `sharelist_list` and `sharelist_popular`. Documented portion is\n`lists[]`." - removed
Output schema / properties / lists / descriptionRemoved value: -"Sharelist summaries." - removed
Output schema / titleRemoved value: -"SharelistListResponse"
- Changed
sharelist_popular12 fields changed- removed
Output schema / $defs / SharelistSummary / descriptionRemoved value: -"A single sharelist summary entry. Subset of upstream fields." - removed
Output schema / $defs / SharelistSummary / properties / creator / descriptionRemoved value: -"Creator info (`sharelist_popular` only); passthrough, shape\nupstream-defined." - removed
Output schema / $defs / SharelistSummary / properties / descriptionRemoved value: -{ - "description": "List description.", - "type": [ - "string", - "null" - ] -} - removed
Output schema / $defs / SharelistSummary / properties / follower_count / descriptionRemoved value: -"Number of followers / subscribers of this list." - removed
Output schema / $defs / SharelistSummary / properties / id / descriptionRemoved value: -"Sharelist ID." - removed
Output schema / $defs / SharelistSummary / properties / is_owner / descriptionRemoved value: -"Whether the current user owns this list (`sharelist_list` only)." - removed
Output schema / $defs / SharelistSummary / properties / name / descriptionRemoved value: -"List name." - removed
Output schema / $defs / SharelistSummary / properties / symbol_count / descriptionRemoved value: -"Number of securities in the list." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `sharelist_list` and `sharelist_popular`. Documented portion is\n`lists[]`." - removed
Output schema / properties / lists / descriptionRemoved value: -"Sharelist summaries." - removed
Output schema / titleRemoved value: -"SharelistListResponse"
- Changed
short_trades12 fields changed- removed
Output schema / $defs / ShortTradesItem / properties / balance / descriptionRemoved value: -"HK only — outstanding short balance (HKD)." - removed
Output schema / $defs / ShortTradesItem / properties / close / descriptionRemoved value: -"Close price for the day." - removed
Output schema / $defs / ShortTradesItem / properties / market_vol / descriptionRemoved value: -"HK only — total market trading volume for the day." - removed
Output schema / $defs / ShortTradesItem / properties / nasdaq_vol / descriptionRemoved value: -"US only — NASDAQ short volume." - removed
Output schema / $defs / ShortTradesItem / properties / nyse_vol / descriptionRemoved value: -"US only — NYSE short volume." - removed
Output schema / $defs / ShortTradesItem / properties / rate / descriptionRemoved value: -"Short volume as a ratio of total volume (decimal, e.g. 0.36 = 36%)." - removed
Output schema / $defs / ShortTradesItem / properties / short_vol / descriptionRemoved value: -"Daily short-sale volume in shares." - removed
Output schema / $defs / ShortTradesItem / properties / timestamp / descriptionRemoved value: -"Trade date (RFC3339)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `short_trades`. Wraps a unified `data` array of daily short-sale\nvolume history for HK or US stocks. Market-specific fields are populated\nonly for their respective market (US: `nasdaq_vol`/`nyse_vol`; HK:\n`balance`/`market_vol`). Subset of the wire response." - removed
Output schema / properties / data / descriptionRemoved value: -"Daily short-sale volume entries." - removed
Output schema / titleRemoved value: -"ShortTradesResponse"
- Changed
statement_export4 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `statement_export`." - removed
Output schema / properties / url / descriptionRemoved value: -"Pre-signed HTTPS URL for downloading the statement JSON. Short-lived\n— fetch it promptly." - removed
Output schema / titleRemoved value: -"StatementUrlResponse"
- Changed
statement_list6 fields changed- removed
Output schema / $defs / StatementItem / properties / dt / descriptionRemoved value: -"Statement date as a `yyyymmdd` integer (e.g. `20240115`)." - removed
Output schema / $defs / StatementItem / properties / file_key / descriptionRemoved value: -"Opaque file key identifying this statement. Pass to `statement_export`\nto obtain a pre-signed download URL." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `statement_list`.\n\nWraps a `list` array of statement entries. The SDK's `StatementItem`\n(`{ dt: i32, file_key: String }`) is emitted unchanged by the transform\npipeline: `dt` is a plain integer date (`yyyymmdd`, e.g. `20240115`) that is\nnot a `*_at` field and so is left as a number, and `file_key` does not match\nthe counter_id pattern." - removed
Output schema / properties / list / descriptionRemoved value: -"Available statements in the requested range." - removed
Output schema / titleRemoved value: -"StatementListResponse"
- Changed
stock_positions14 fields changed- removed
Output schema / $defs / StockPosition / properties / available_quantity / descriptionRemoved value: -"Quantity available to sell (excludes locked / pending)." - removed
Output schema / $defs / StockPosition / properties / cost_price / descriptionRemoved value: -"Cost price (per the client's choice of average or diluted cost)." - removed
Output schema / $defs / StockPosition / properties / currency / descriptionRemoved value: -"Settlement currency, e.g. \"USD\" / \"HKD\"." - removed
Output schema / $defs / StockPosition / properties / init_quantity / descriptionRemoved value: -"Holding quantity at market open (pre-market baseline)." - removed
Output schema / $defs / StockPosition / properties / market / descriptionRemoved value: -"Market code, e.g. \"US\" / \"HK\"." - removed
Output schema / $defs / StockPosition / properties / quantity / descriptionRemoved value: -"Total holding quantity." - removed
Output schema / $defs / StockPosition / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"700.HK\"." - removed
Output schema / $defs / StockPosition / properties / symbol_name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / StockPositionChannel / properties / account_channel / descriptionRemoved value: -"Broker channel identifier. Always emitted as `null` for privacy." - removed
Output schema / $defs / StockPositionChannel / properties / stock_info / descriptionRemoved value: -"Stock positions held in this channel." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `stock_positions`. Top-level wraps a `list` array\n(one entry per linked broker channel), each carrying its own positions." - removed
Output schema / properties / list / descriptionRemoved value: -"Position channels — one entry per broker channel." - removed
Output schema / titleRemoved value: -"StockPositionsResponse"
- Changed
submit_order4 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `submit_order`." - removed
Output schema / properties / order_id / descriptionRemoved value: -"The newly-created order ID. Pass this to `cancel_order` /\n`replace_order` / `order_detail`." - removed
Output schema / titleRemoved value: -"OrderIdResponse"
- Changed
top_movers16 fields changed- removed
Output schema / $defs / TopMoverEvent / properties / alert_reason / descriptionRemoved value: -"Human-readable reason for the alert." - removed
Output schema / $defs / TopMoverEvent / properties / alert_type / descriptionRemoved value: -"Alert type/category." - removed
Output schema / $defs / TopMoverEvent / properties / stock / descriptionRemoved value: -"The stock that moved." - removed
Output schema / $defs / TopMoverEvent / properties / timestamp / descriptionRemoved value: -"Event time (RFC3339)." - removed
Output schema / $defs / TopMoverStock / properties / change / descriptionRemoved value: -"Price change (decimal ratio, e.g. 0.0445 = +4.45%)." - removed
Output schema / $defs / TopMoverStock / properties / intro / descriptionRemoved value: -"Short company introduction." - removed
Output schema / $defs / TopMoverStock / properties / labels / descriptionRemoved value: -"Tag labels associated with the stock." - removed
Output schema / $defs / TopMoverStock / properties / last_done / descriptionRemoved value: -"Latest traded price." - removed
Output schema / $defs / TopMoverStock / properties / name / descriptionRemoved value: -"Display name of the security." - removed
Output schema / $defs / TopMoverStock / properties / symbol / descriptionRemoved value: -"Security symbol, e.g. \"700.HK\"." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `top_movers`. Wraps an `events` array of stocks whose price\nfluctuation exceeded the 20-trading-day standard deviation, with correlated\nnews reasons, plus pagination metadata. Subset of the wire response." - removed
Output schema / properties / events / descriptionRemoved value: -"Mover events." - removed
Output schema / properties / next_params / descriptionRemoved value: -"Pagination cursor. Pass back verbatim as `next_params` to fetch the\nnext page. Opaque object — exact fields are an implementation detail." - removed
Output schema / properties / updated_at / descriptionRemoved value: -"Last refresh time (RFC3339)." - removed
Output schema / titleRemoved value: -"TopMoversResponse"
- Changed
topic_create4 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `topic_create`. The handler wraps the new topic ID in a single\n`{ \"id\": ... }` object." - removed
Output schema / properties / id / descriptionRemoved value: -"ID of the newly-created topic. Pass to `topic_detail` / `topic_replies`." - removed
Output schema / titleRemoved value: -"TopicCreateResponse"
- Changed
topic_create_reply20 fields changed- removed
Output schema / $defs / TopicAuthor / descriptionRemoved value: -"Author of a topic or reply." - removed
Output schema / $defs / TopicAuthor / properties / avatar / descriptionRemoved value: -"Avatar URL." - removed
Output schema / $defs / TopicAuthor / properties / member_id / descriptionRemoved value: -"Member ID." - removed
Output schema / $defs / TopicAuthor / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / TopicImage / descriptionRemoved value: -"An image attached to a topic or reply." - removed
Output schema / $defs / TopicImage / properties / lg / descriptionRemoved value: -"Large image URL." - removed
Output schema / $defs / TopicImage / properties / sm / descriptionRemoved value: -"Small thumbnail URL." - removed
Output schema / $defs / TopicImage / properties / url / descriptionRemoved value: -"Original image URL." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `topic_create_reply`. The created reply.\n\nSDK-typed (`longbridge::content::TopicReply`) and serialized via `tool_json`.\n`created_at` is emitted as an RFC3339 string." - removed
Output schema / properties / author / descriptionRemoved value: -"Reply author." - removed
Output schema / properties / body / descriptionRemoved value: -"Reply body (plain text)." - removed
Output schema / properties / comments_count / descriptionRemoved value: -"Nested replies count." - removed
Output schema / properties / created_at / descriptionRemoved value: -"Created time (RFC3339)." - removed
Output schema / properties / id / descriptionRemoved value: -"Reply ID." - removed
Output schema / properties / images / descriptionRemoved value: -"Attached images." - removed
Output schema / properties / likes_count / descriptionRemoved value: -"Likes count." - removed
Output schema / properties / reply_to_id / descriptionRemoved value: -"Parent reply ID (`\"0\"` means top-level)." - removed
Output schema / properties / topic_id / descriptionRemoved value: -"Topic ID this reply belongs to." - removed
Output schema / titleRemoved value: -"TopicCreateReplyResponse"
- Changed
topic_detail27 fields changed- removed
Output schema / $defs / TopicAuthor / descriptionRemoved value: -"Author of a topic or reply." - removed
Output schema / $defs / TopicAuthor / properties / avatar / descriptionRemoved value: -"Avatar URL." - removed
Output schema / $defs / TopicAuthor / properties / member_id / descriptionRemoved value: -"Member ID." - removed
Output schema / $defs / TopicAuthor / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / TopicImage / descriptionRemoved value: -"An image attached to a topic or reply." - removed
Output schema / $defs / TopicImage / properties / lg / descriptionRemoved value: -"Large image URL." - removed
Output schema / $defs / TopicImage / properties / sm / descriptionRemoved value: -"Small thumbnail URL." - removed
Output schema / $defs / TopicImage / properties / url / descriptionRemoved value: -"Original image URL." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `topic_detail`. Full details of a single community topic.\n\nSDK-typed (`longbridge::content::OwnedTopic`) and serialized via `tool_json`.\n`created_at` / `updated_at` are emitted as RFC3339 strings." - removed
Output schema / properties / author / descriptionRemoved value: -"Topic author." - removed
Output schema / properties / body / descriptionRemoved value: -"Markdown body." - removed
Output schema / properties / comments_count / descriptionRemoved value: -"Comments count." - removed
Output schema / properties / created_at / descriptionRemoved value: -"Created time (RFC3339)." - removed
Output schema / properties / descriptionRemoved value: -{ - "description": "Plain-text excerpt / description.", - "type": "string" -} - removed
Output schema / properties / detail_url / descriptionRemoved value: -"URL to the full topic page." - removed
Output schema / properties / hashtags / descriptionRemoved value: -"Hashtag names." - removed
Output schema / properties / id / descriptionRemoved value: -"Topic ID." - removed
Output schema / properties / images / descriptionRemoved value: -"Attached images." - removed
Output schema / properties / likes_count / descriptionRemoved value: -"Likes count." - removed
Output schema / properties / shares_count / descriptionRemoved value: -"Shares count." - removed
Output schema / properties / tickers / descriptionRemoved value: -"Related stock tickers, format `<CODE>.<MARKET>` (e.g. \"TSLA.US\")." - removed
Output schema / properties / titleRemoved value: -{ - "description": "Title.", - "type": "string" -} - removed
Output schema / properties / topic_type / descriptionRemoved value: -"Content type: \"article\" or \"post\"." - removed
Output schema / properties / updated_at / descriptionRemoved value: -"Last updated time (RFC3339)." - removed
Output schema / properties / views_count / descriptionRemoved value: -"Views count." - removed
Output schema / titleRemoved value: -"TopicDetailResponse"
- Changed
trading_days5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `trading_days`." - removed
Output schema / properties / half_trading_days / descriptionRemoved value: -"Half-day trading sessions in the requested range (yyyy-mm-dd)." - removed
Output schema / properties / trading_days / descriptionRemoved value: -"Full trading days in the requested range (yyyy-mm-dd)." - removed
Output schema / titleRemoved value: -"TradingDaysResponse"
- Changed
update_watchlist_group5 fields changed- removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `update_watchlist_group`." - removed
Output schema / properties / id / descriptionRemoved value: -"The updated watchlist group ID (echoed from the request)." - removed
Output schema / properties / updated / descriptionRemoved value: -"Always `true` on success." - removed
Output schema / titleRemoved value: -"UpdateWatchlistGroupResponse"
- Changed
valuation14 fields changed- removed
Output schema / $defs / ValuationMetric / descriptionRemoved value: -"A single valuation indicator block in `valuation`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationMetric / properties / 5yr_avg / descriptionRemoved value: -"5-year average. (camelCase `5yr_avg` per description.)" - removed
Output schema / $defs / ValuationMetric / properties / current / descriptionRemoved value: -"Current value." - removed
Output schema / $defs / ValuationMetric / properties / industry_avg / descriptionRemoved value: -"Industry average." - removed
Output schema / $defs / ValuationMetric / properties / percentile / descriptionRemoved value: -"Historical percentile." - removed
Output schema / $defs / ValuationMetrics / descriptionRemoved value: -"`metrics` block of `valuation`. Each indicator carries the same shape.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationMetrics / properties / dividend_yield / descriptionRemoved value: -"Dividend-yield block." - removed
Output schema / $defs / ValuationMetrics / properties / pb / descriptionRemoved value: -"Price-to-book block." - removed
Output schema / $defs / ValuationMetrics / properties / pe / descriptionRemoved value: -"Price-to-earnings block." - removed
Output schema / $defs / ValuationMetrics / properties / ps / descriptionRemoved value: -"Price-to-sales block." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `valuation`. The valuation overview groups per-metric blocks\nunder `metrics`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / metrics / descriptionRemoved value: -"Valuation metric blocks keyed by indicator." - removed
Output schema / titleRemoved value: -"ValuationResponse"
- Changed
valuation_comparison18 fields changed- removed
Output schema / $defs / ValuationComparisonHistoryPoint / descriptionRemoved value: -"One history point in `valuation_comparison`'s nested `history`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationComparisonHistoryPoint / properties / date / descriptionRemoved value: -"Sample date (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / ValuationComparisonHistoryPoint / properties / pb / descriptionRemoved value: -"Price-to-book at this date." - removed
Output schema / $defs / ValuationComparisonHistoryPoint / properties / pe / descriptionRemoved value: -"Price-to-earnings at this date." - removed
Output schema / $defs / ValuationComparisonHistoryPoint / properties / ps / descriptionRemoved value: -"Price-to-sales at this date." - removed
Output schema / $defs / ValuationComparisonItem / descriptionRemoved value: -"One stock in `valuation_comparison`'s `list`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationComparisonItem / properties / history / descriptionRemoved value: -"Per-date valuation history." - removed
Output schema / $defs / ValuationComparisonItem / properties / market_value / descriptionRemoved value: -"Market value." - removed
Output schema / $defs / ValuationComparisonItem / properties / name / descriptionRemoved value: -"Display name." - removed
Output schema / $defs / ValuationComparisonItem / properties / pb / descriptionRemoved value: -"Price-to-book." - removed
Output schema / $defs / ValuationComparisonItem / properties / pe / descriptionRemoved value: -"Price-to-earnings." - removed
Output schema / $defs / ValuationComparisonItem / properties / price_close / descriptionRemoved value: -"Latest close price." - removed
Output schema / $defs / ValuationComparisonItem / properties / ps / descriptionRemoved value: -"Price-to-sales." - removed
Output schema / $defs / ValuationComparisonItem / properties / symbol / descriptionRemoved value: -"Security symbol (transformed from `counter_id`)." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `valuation_comparison`. Wraps a `list` of compared stocks.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / list / descriptionRemoved value: -"Compared stocks (primary + peers)." - removed
Output schema / titleRemoved value: -"ValuationComparisonResponse"
- Changed
valuation_history14 fields changed- removed
Output schema / $defs / ValuationHistoryBlock / descriptionRemoved value: -"`history` block of `valuation_history`." - removed
Output schema / $defs / ValuationHistoryBlock / properties / metrics / descriptionRemoved value: -"Per-indicator time series." - removed
Output schema / $defs / ValuationHistoryMetrics / descriptionRemoved value: -"`history.metrics` block of `valuation_history`. Each indicator is an array\nof time-series samples.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationHistoryMetrics / properties / dividend_yield / descriptionRemoved value: -"Dividend-yield series." - removed
Output schema / $defs / ValuationHistoryMetrics / properties / pb / descriptionRemoved value: -"Price-to-book series." - removed
Output schema / $defs / ValuationHistoryMetrics / properties / pe / descriptionRemoved value: -"Price-to-earnings series." - removed
Output schema / $defs / ValuationHistoryMetrics / properties / ps / descriptionRemoved value: -"Price-to-sales series." - removed
Output schema / $defs / ValuationHistoryPoint / descriptionRemoved value: -"One sample in a `valuation_history` metric time series.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / $defs / ValuationHistoryPoint / properties / timestamp / descriptionRemoved value: -"Sample timestamp (RFC3339; rewritten from a unix-epoch field)." - removed
Output schema / $defs / ValuationHistoryPoint / properties / value / descriptionRemoved value: -"Metric value at this timestamp." - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / descriptionRemoved value: -"Returned by `valuation_history`. Time-series valuation metrics grouped\nunder `history.metrics`.\n\nSubset of documented fields; upstream may return more." - removed
Output schema / properties / history / descriptionRemoved value: -"History container." - removed
Output schema / titleRemoved value: -"ValuationHistoryResponse"
1 tool update
v0.5.8- Changed
market_status1 field changed- changed
Output schema / $defs / MarketStatusEntry / properties / trade_status / descriptionPrevious value: -"Trading status label: one of Pre-Open / Trading / Lunch Break /\nPost-Trading / Closed / Pre-Market / Post-Market / Unknown."New value: +"Trading status label, e.g. Trading / Closed / Mid-Day Break /\nPre-Market / Post-Market / Overnight / Unknown."
68 tool updates
v0.5.6- Changed
alert_disable1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `alert_enable` / `alert_disable`. The handler builds this exact\nobject on success.", + "properties": { + "alert_id": { + "description": "The alert (indicator) ID that was toggled.", + "type": "string" + }, + "enabled": { + "description": "New enabled state: `true` for enable, `false` for disable.", + "type": "boolean" + } + }, + "required": [ + "alert_id", + "enabled" + ], + "title": "AlertToggleResponse", + "type": "object" +}
- Changed
alert_enable1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `alert_enable` / `alert_disable`. The handler builds this exact\nobject on success.", + "properties": { + "alert_id": { + "description": "The alert (indicator) ID that was toggled.", + "type": "string" + }, + "enabled": { + "description": "New enabled state: `true` for enable, `false` for disable.", + "type": "boolean" + } + }, + "required": [ + "alert_id", + "enabled" + ], + "title": "AlertToggleResponse", + "type": "object" +}
- Changed
alert_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "AlertIndicator": { + "description": "A single configured price-alert indicator.", + "properties": { + "condition": { + "description": "Alert condition.", + "type": [ + "string", + "null" + ] + }, + "enabled": { + "description": "Whether the alert is currently enabled.", + "type": [ + "boolean", + "null" + ] + }, + "frequency": { + "description": "Alert frequency.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Alert (indicator) ID. Use as `alert_id` in alert_delete/enable/disable.", + "type": [ + "string", + "null" + ] + }, + "indicator_id": { + "description": "Indicator type ID.", + "type": [ + "string", + "null" + ] + }, + "price": { + "description": "Threshold price or percentage value.", + "type": [ + "string", + "null" + ] + }, + "triggered_at": { + "description": "Time the alert last triggered (RFC3339), if any.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "AlertSymbolGroup": { + "description": "A group of alert indicators configured for one security.", + "properties": { + "indicators": { + "description": "Configured alert indicators for this symbol.", + "items": { + "$ref": "#/$defs/AlertIndicator" + }, + "type": [ + "array", + "null" + ] + }, + "symbol": { + "description": "Security symbol (upstream `counter_id`, normalized to `<CODE>.<MARKET>`).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `alert_list`. The upstream price-alert payload, forwarded after\nthe standard transform (note: upstream `counter_id` is renamed to `symbol`\nand `*_at` timestamps become RFC3339). Subset of the wire payload — only the\ndocumented fields are declared; all are optional.", + "properties": { + "lists": { + "description": "Per-symbol alert groups.", + "items": { + "$ref": "#/$defs/AlertSymbolGroup" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "AlertListResponse", + "type": "object" +}
- Changed
anomaly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "AnomalyChange": { + "properties": { + "change_rate": { + "description": "Price change rate (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"700.HK\".", + "type": [ + "string", + "null" + ] + }, + "volume": { + "description": "Traded volume associated with the anomaly.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `anomaly`. Wraps a `changes` array of unusual price/volume\nalerts plus an `all_off` flag. Subset of the wire response — the\ndescription marks `changes[]` as having further undocumented fields.", + "properties": { + "all_off": { + "description": "Whether anomaly alerting is globally off for the market.", + "type": [ + "boolean", + "null" + ] + }, + "changes": { + "description": "Anomaly alert entries.", + "items": { + "$ref": "#/$defs/AnomalyChange" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "AnomalyResponse", + "type": "object" +}
- Changed
broker_holding1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "BrokerHoldingItem": { + "properties": { + "broker_name": { + "description": "Broker (participant) name.", + "type": [ + "string", + "null" + ] + }, + "holding_change": { + "description": "Change in shares held over the period.", + "type": [ + "string", + "null" + ] + }, + "holding_quantity": { + "description": "Shares held by this broker.", + "type": [ + "string", + "null" + ] + }, + "holding_ratio": { + "description": "Holding as a ratio of total issued shares.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `broker_holding`. Wraps an `items` array of top broker holdings\nfor an HK stock (HKEX CCASS participant disclosure). Subset of the wire\nresponse.", + "properties": { + "items": { + "description": "Top broker holding entries for the requested period.", + "items": { + "$ref": "#/$defs/BrokerHoldingItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "BrokerHoldingResponse", + "type": "object" +}
- Changed
broker_holding_daily1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "BrokerHoldingDailyItem": { + "properties": { + "date": { + "description": "Disclosure date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "holding_change": { + "description": "Change in shares held versus the prior day.", + "type": [ + "string", + "null" + ] + }, + "holding_quantity": { + "description": "Shares held by this broker on that date.", + "type": [ + "string", + "null" + ] + }, + "holding_ratio": { + "description": "Holding as a ratio of total issued shares.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `broker_holding_daily`. Wraps an `items` array of the daily\nholding history for one broker in an HK stock. Subset of the wire response.", + "properties": { + "items": { + "description": "Daily holding history entries.", + "items": { + "$ref": "#/$defs/BrokerHoldingDailyItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "BrokerHoldingDailyResponse", + "type": "object" +}
- Changed
broker_holding_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "BrokerHoldingDetailItem": { + "properties": { + "broker_id": { + "description": "Broker (participant) number.", + "type": [ + "string", + "null" + ] + }, + "broker_name": { + "description": "Broker (participant) name.", + "type": [ + "string", + "null" + ] + }, + "date": { + "description": "Disclosure date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "holding_change": { + "description": "Change in shares held.", + "type": [ + "string", + "null" + ] + }, + "holding_quantity": { + "description": "Shares held by this broker.", + "type": [ + "string", + "null" + ] + }, + "holding_ratio": { + "description": "Holding as a ratio of total issued shares.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `broker_holding_detail`. Wraps an `items` array of the full\nbroker holding list for an HK stock (HKEX CCASS participant disclosure).\nSubset of the wire response.", + "properties": { + "items": { + "description": "Full broker holding detail entries.", + "items": { + "$ref": "#/$defs/BrokerHoldingDetailItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "BrokerHoldingDetailResponse", + "type": "object" +}
- Changed
business_segments_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "BusinessSegmentsHistoryPeriod": { + "description": "One period snapshot in `business_segments_history`'s `historical`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "business": { + "description": "Revenue by business line.", + "items": { + "$ref": "#/$defs/SegmentBreakdown" + }, + "type": [ + "array", + "null" + ] + }, + "currency": { + "description": "Settlement currency.", + "type": [ + "string", + "null" + ] + }, + "date": { + "description": "Period date.", + "type": [ + "string", + "null" + ] + }, + "regionals": { + "description": "Revenue by region.", + "items": { + "$ref": "#/$defs/SegmentBreakdown" + }, + "type": [ + "array", + "null" + ] + }, + "total": { + "description": "Total revenue for the period.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "SegmentBreakdown": { + "description": "One segment breakdown entry in `business_segments_history`\n(`business[]` / `regionals[]`).\n\nSubset of documented fields; upstream may return more.", + "properties": { + "name": { + "description": "Segment / region name.", + "type": [ + "string", + "null" + ] + }, + "percent": { + "description": "Percentage of total.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Absolute value.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `business_segments_history`. Wraps a `historical` array of\nper-period segment snapshots.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "historical": { + "description": "Per-period segment snapshots.", + "items": { + "$ref": "#/$defs/BusinessSegmentsHistoryPeriod" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "BusinessSegmentsHistoryResponse", + "type": "object" +}
- Changed
company1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `company`. Company overview / profile.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "ceo": { + "description": "Chief Executive Officer.", + "type": [ + "string", + "null" + ] + }, + "description": { + "description": "Business profile / description.", + "type": [ + "string", + "null" + ] + }, + "employees": { + "description": "Number of employees.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "exchange": { + "description": "Listing exchange.", + "type": [ + "string", + "null" + ] + }, + "founded_year": { + "description": "Year the company was founded.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "industry": { + "description": "Industry classification.", + "type": [ + "string", + "null" + ] + }, + "market_cap": { + "description": "Market capitalization.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Company name.", + "type": [ + "string", + "null" + ] + }, + "website": { + "description": "Company website.", + "type": [ + "string", + "null" + ] + } + }, + "title": "CompanyResponse", + "type": "object" +}
- Changed
consensus1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ConsensusItem": { + "description": "One record in `consensus`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "analyst_count": { + "description": "Number of contributing analysts.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "eps_estimate": { + "description": "EPS estimate.", + "type": [ + "string", + "null" + ] + }, + "last_updated": { + "description": "Last update time.", + "type": [ + "string", + "null" + ] + }, + "net_income_estimate": { + "description": "Net income estimate.", + "type": [ + "string", + "null" + ] + }, + "period": { + "description": "Estimate period.", + "type": [ + "string", + "null" + ] + }, + "revenue_estimate": { + "description": "Revenue estimate.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `consensus`. Wraps an `items` array of consensus estimates.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "Consensus estimate records for upcoming periods.", + "items": { + "$ref": "#/$defs/ConsensusItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ConsensusResponse", + "type": "object" +}
- Changed
corp_action1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "CorpActionItem": { + "description": "One event in `corp_action`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "action_type": { + "description": "Action type (split, buyback, name change, ...).", + "type": [ + "string", + "null" + ] + }, + "description": { + "description": "Free-text description.", + "type": [ + "string", + "null" + ] + }, + "effective_date": { + "description": "Effective date.", + "type": [ + "string", + "null" + ] + }, + "ratio": { + "description": "Ratio (e.g. for splits).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `corp_action`. Wraps an `items` array of corporate actions.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "Corporate action events.", + "items": { + "$ref": "#/$defs/CorpActionItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "CorpActionResponse", + "type": "object" +}
- Changed
create_watchlist_group1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `create_watchlist_group`.", + "properties": { + "id": { + "description": "The newly-created watchlist group ID. Pass this to\n`update_watchlist_group` / `delete_watchlist_group`.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "id" + ], + "title": "CreateWatchlistGroupResponse", + "type": "object" +}
- Changed
dca_check1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DcaCheckItem": { + "description": "DCA-eligibility result for one symbol.", + "properties": { + "reason": { + "description": "Reason when unsupported.", + "type": [ + "string", + "null" + ] + }, + "support_dca": { + "description": "Whether the symbol supports DCA recurring investment.", + "type": [ + "boolean", + "null" + ] + }, + "symbol": { + "description": "Security symbol.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dca_check`. DCA-eligibility result per queried symbol,\nforwarded after the standard transform (upstream `counter_ids` query →\nper-symbol items). Subset of the wire payload — only documented fields are\ndeclared; all optional.", + "properties": { + "items": { + "description": "Per-symbol support results.", + "items": { + "$ref": "#/$defs/DcaCheckItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "DcaCheckResponse", + "type": "object" +}
- Changed
dca_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DcaExecution": { + "description": "A single DCA plan execution record.", + "properties": { + "amount": { + "description": "Amount invested (decimal string).", + "type": [ + "string", + "null" + ] + }, + "date": { + "description": "Execution date.", + "type": [ + "string", + "null" + ] + }, + "order_id": { + "description": "Resulting order ID, if any.", + "type": [ + "string", + "null" + ] + }, + "price": { + "description": "Execution price (decimal string).", + "type": [ + "string", + "null" + ] + }, + "quantity": { + "description": "Quantity acquired (decimal string).", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Execution status.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dca_history`. Execution records for one DCA plan, forwarded\nafter the standard transform. Subset of the wire payload — only documented\nfields are declared; all optional.", + "properties": { + "executions": { + "description": "Execution records.", + "items": { + "$ref": "#/$defs/DcaExecution" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "DcaHistoryResponse", + "type": "object" +}
- Changed
dca_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DcaPlan": { + "description": "A single DCA recurring-investment plan.", + "properties": { + "amount": { + "description": "Amount invested per cycle (decimal string).", + "type": [ + "string", + "null" + ] + }, + "currency": { + "description": "Settlement currency.", + "type": [ + "string", + "null" + ] + }, + "frequency": { + "description": "Investment frequency (Daily / Weekly / Monthly).", + "type": [ + "string", + "null" + ] + }, + "next_execution_date": { + "description": "Next scheduled execution date (RFC3339; upstream `next_trd_date`).", + "type": [ + "string", + "null" + ] + }, + "plan_id": { + "description": "Plan ID. Use with dca_update / dca_pause / dca_resume / dca_stop.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Plan status (Active / Suspended / Finished).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol (e.g. \"AAPL.US\").", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dca_list`. Upstream DCA plan-query payload forwarded after the\nstandard transform; the `next_trd_date` unix field is converted to RFC3339.\nSubset of the wire payload — only documented fields are declared; all\noptional.", + "properties": { + "plans": { + "description": "Recurring-investment (DCA) plans.", + "items": { + "$ref": "#/$defs/DcaPlan" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "DcaListResponse", + "type": "object" +}
- Changed
dca_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DcaStatsItem": { + "description": "Per-symbol DCA statistics line.", + "properties": { + "invested": { + "description": "Amount invested in this symbol (decimal string).", + "type": [ + "string", + "null" + ] + }, + "return_rate": { + "description": "Return rate for this symbol (decimal string).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Current value of this symbol's position (decimal string).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dca_stats`. Aggregate DCA statistics forwarded after the\nstandard transform. Subset of the wire payload — only documented fields are\ndeclared; all optional.", + "properties": { + "items": { + "description": "Per-symbol breakdown.", + "items": { + "$ref": "#/$defs/DcaStatsItem" + }, + "type": [ + "array", + "null" + ] + }, + "plan_count": { + "description": "Number of plans included.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "return_rate": { + "description": "Overall return rate (decimal string).", + "type": [ + "string", + "null" + ] + }, + "total_invested": { + "description": "Total amount invested across plans (decimal string).", + "type": [ + "string", + "null" + ] + }, + "total_return": { + "description": "Total return (decimal string).", + "type": [ + "string", + "null" + ] + }, + "total_value": { + "description": "Current total market value (decimal string).", + "type": [ + "string", + "null" + ] + } + }, + "title": "DcaStatsResponse", + "type": "object" +}
- Changed
delete_watchlist_group1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `delete_watchlist_group`.", + "properties": { + "deleted": { + "description": "Always `true` on success.", + "type": "boolean" + }, + "id": { + "description": "The deleted watchlist group ID (echoed from the request).", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "id", + "deleted" + ], + "title": "DeleteWatchlistGroupResponse", + "type": "object" +}
- Changed
dividend1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DividendItem": { + "description": "One dividend event in `dividend`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "amount": { + "description": "Dividend amount.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "description": "Settlement currency.", + "type": [ + "string", + "null" + ] + }, + "dividend_type": { + "description": "Dividend type.", + "type": [ + "string", + "null" + ] + }, + "ex_date": { + "description": "Ex-dividend date.", + "type": [ + "string", + "null" + ] + }, + "pay_date": { + "description": "Payment date.", + "type": [ + "string", + "null" + ] + }, + "record_date": { + "description": "Record date.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Dividend status.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dividend`. Wraps an `items` array of dividend events.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "Dividend events for the symbol.", + "items": { + "$ref": "#/$defs/DividendItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "DividendResponse", + "type": "object" +}
- Changed
dividend_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "DividendDetailItem": { + "description": "One distribution scheme in `dividend_detail`'s `details`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "cash_dividend": { + "description": "Cash dividend per share.", + "type": [ + "string", + "null" + ] + }, + "currency": { + "description": "Settlement currency.", + "type": [ + "string", + "null" + ] + }, + "ex_date": { + "description": "Ex-dividend date.", + "type": [ + "string", + "null" + ] + }, + "pay_date": { + "description": "Payment date.", + "type": [ + "string", + "null" + ] + }, + "period": { + "description": "Reporting period.", + "type": [ + "string", + "null" + ] + }, + "record_date": { + "description": "Record date.", + "type": [ + "string", + "null" + ] + }, + "stock_dividend": { + "description": "Stock dividend ratio / amount.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `dividend_detail`. Wraps a `details` array of distribution\nschemes.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "details": { + "description": "Per-period distribution schemes.", + "items": { + "$ref": "#/$defs/DividendDetailItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "DividendDetailResponse", + "type": "object" +}
- Changed
executive1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ExecutiveMember": { + "description": "One person in `executive`'s `members`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "age": { + "description": "Age.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "appointed_date": { + "description": "Date appointed.", + "type": [ + "string", + "null" + ] + }, + "biography": { + "description": "Biography.", + "type": [ + "string", + "null" + ] + }, + "compensation": { + "description": "Compensation.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Full name.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Title / role.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `executive`. Wraps a `members` array of executives / board\nmembers.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "members": { + "description": "Executive and board members.", + "items": { + "$ref": "#/$defs/ExecutiveMember" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ExecutiveResponse", + "type": "object" +}
- Changed
finance_calendar1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "FinanceCalendarBucket": { + "properties": { + "date": { + "description": "Bucket date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "infos": { + "description": "Events occurring on this date.", + "items": { + "$ref": "#/$defs/FinanceCalendarEvent" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "FinanceCalendarEvent": { + "properties": { + "datetime": { + "description": "Event time (RFC3339).", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Event ID (may be empty for events without one, e.g. market closures).", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"US\" / \"HK\".", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol when the event is stock-specific, e.g. \"AAPL.US\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `finance_calendar`. Wraps a `list` array of date buckets, each\nholding an `infos` array of events. Subset of the wire response — the\nevent field set varies by `category` (report / dividend / split / ipo /\nmacrodata / closed) and is only partially documented, so only the keys the\nmerge/dedup pipeline relies on are modeled here.", + "properties": { + "list": { + "description": "Date buckets, sorted ascending by date.", + "items": { + "$ref": "#/$defs/FinanceCalendarBucket" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "FinanceCalendarResponse", + "type": "object" +}
- Changed
financial_report_latest1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `financial_report_latest`. Latest financial report summary.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "eps": { + "description": "Earnings per share.", + "type": [ + "string", + "null" + ] + }, + "gross_margin": { + "description": "Gross margin.", + "type": [ + "string", + "null" + ] + }, + "net_income": { + "description": "Net income.", + "type": [ + "string", + "null" + ] + }, + "period": { + "description": "Reporting period.", + "type": [ + "string", + "null" + ] + }, + "report_date": { + "description": "Report date.", + "type": [ + "string", + "null" + ] + }, + "revenue": { + "description": "Revenue.", + "type": [ + "string", + "null" + ] + }, + "roe": { + "description": "Return on equity.", + "type": [ + "string", + "null" + ] + } + }, + "title": "FinancialReportLatestResponse", + "type": "object" +}
- Changed
financial_report_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ForecastActual": { + "description": "An actual-vs-forecast comparison block in `financial_report_snapshot`\n(`fo_revenue` / `fo_ebit` / `fo_eps`).\n\nSubset of documented fields; upstream may return more.", + "properties": { + "cmp": { + "description": "Actual vs forecast comparison.", + "type": [ + "string", + "null" + ] + }, + "yoy": { + "description": "Year-over-year change.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `financial_report_snapshot`. Actual-vs-forecast comparison\nplus financial ratios.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "fo_ebit": { + "anyOf": [ + { + "$ref": "#/$defs/ForecastActual" + }, + { + "type": "null" + } + ], + "description": "EBIT: actual vs forecast." + }, + "fo_eps": { + "anyOf": [ + { + "$ref": "#/$defs/ForecastActual" + }, + { + "type": "null" + } + ], + "description": "EPS: actual vs forecast." + }, + "fo_revenue": { + "anyOf": [ + { + "$ref": "#/$defs/ForecastActual" + }, + { + "type": "null" + } + ], + "description": "Revenue: actual vs forecast." + }, + "report_desc": { + "description": "Text summary of the report.", + "type": [ + "string", + "null" + ] + } + }, + "title": "FinancialReportSnapshotResponse", + "type": "object" +}
- Changed
forecast_eps1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ForecastEpsItem": { + "description": "One record in `forecast_eps`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "analyst_count": { + "description": "Number of contributing analysts.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "eps_actual": { + "description": "Actual reported EPS.", + "type": [ + "string", + "null" + ] + }, + "eps_estimate": { + "description": "Consensus EPS estimate.", + "type": [ + "string", + "null" + ] + }, + "forecast_end_date": { + "description": "Forecast period end (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "forecast_start_date": { + "description": "Forecast period start (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "surprise_pct": { + "description": "Surprise percentage (actual vs estimate).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `forecast_eps`. Wraps an `items` array of EPS estimates.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "EPS forecast / actual records.", + "items": { + "$ref": "#/$defs/ForecastEpsItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ForecastEpsResponse", + "type": "object" +}
- Changed
fund_holder1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "FundHolderItem": { + "description": "One holder in `fund_holder`'s `fund_holders`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "change": { + "description": "Change in shares.", + "type": [ + "string", + "null" + ] + }, + "fund_name": { + "description": "Fund name.", + "type": [ + "string", + "null" + ] + }, + "fund_symbol": { + "description": "Fund symbol.", + "type": [ + "string", + "null" + ] + }, + "ratio": { + "description": "Ownership ratio.", + "type": [ + "string", + "null" + ] + }, + "reported_at": { + "description": "Report date.", + "type": [ + "string", + "null" + ] + }, + "shares": { + "description": "Shares held.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `fund_holder`. Wraps a `fund_holders` array.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "fund_holders": { + "description": "Funds / ETFs that hold the symbol.", + "items": { + "$ref": "#/$defs/FundHolderItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "FundHolderResponse", + "type": "object" +}
- Changed
industry_peers1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IndustryPeersNode": { + "description": "One node in `industry_peers`' `chain` tree. Self-referential via `next`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "chg": { + "description": "Daily change.", + "type": [ + "string", + "null" + ] + }, + "counter_id": { + "description": "Node identifier (transformed from `counter_id`).", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Node name.", + "type": [ + "string", + "null" + ] + }, + "next": { + "description": "Child sub-sector nodes.", + "items": { + "$ref": "#/$defs/IndustryPeersNode" + }, + "type": [ + "array", + "null" + ] + }, + "stock_num": { + "description": "Number of stocks in this sub-sector.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "ytd_chg": { + "description": "Year-to-date change.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IndustryPeersTop": { + "description": "`top` block of `industry_peers`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "market": { + "description": "Market code.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Industry group name.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `industry_peers`. A hierarchical sub-sector tree (`chain`) plus\nthe originating industry group (`top`).\n\nSubset of documented fields; upstream may return more.", + "properties": { + "chain": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryPeersNode" + }, + { + "type": "null" + } + ], + "description": "Root node of the sub-sector tree." + }, + "top": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryPeersTop" + }, + { + "type": "null" + } + ], + "description": "The originating industry group." + } + }, + "title": "IndustryPeersResponse", + "type": "object" +}
- Changed
industry_valuation1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IndustryValuationHistoryPoint": { + "description": "One history point in `industry_valuation`'s nested `history`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "date": { + "description": "Sample date (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "pb": { + "description": "Price-to-book at this date.", + "type": [ + "string", + "null" + ] + }, + "pe": { + "description": "Price-to-earnings at this date.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IndustryValuationItem": { + "description": "One peer in `industry_valuation`'s `list`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "dividend_yield": { + "description": "Dividend yield.", + "type": [ + "string", + "null" + ] + }, + "history": { + "description": "Per-date history of PE/PB.", + "items": { + "$ref": "#/$defs/IndustryValuationHistoryPoint" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "Display name.", + "type": [ + "string", + "null" + ] + }, + "pb": { + "description": "Price-to-book.", + "type": [ + "string", + "null" + ] + }, + "pe": { + "description": "Price-to-earnings.", + "type": [ + "string", + "null" + ] + }, + "ps": { + "description": "Price-to-sales.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol (transformed from `counter_id`).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `industry_valuation`. Wraps a `list` of industry peers.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "list": { + "description": "Peers in the same industry.", + "items": { + "$ref": "#/$defs/IndustryValuationItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "IndustryValuationResponse", + "type": "object" +}
- Changed
industry_valuation_dist1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IndustryValuationDistribution": { + "description": "One indicator's distribution stats in `industry_valuation_dist`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "current_percentile": { + "description": "Where the stock currently sits in this distribution.", + "type": [ + "string", + "null" + ] + }, + "max": { + "description": "Maximum value.", + "type": [ + "string", + "null" + ] + }, + "median": { + "description": "Median.", + "type": [ + "string", + "null" + ] + }, + "min": { + "description": "Minimum value.", + "type": [ + "string", + "null" + ] + }, + "p25": { + "description": "25th percentile.", + "type": [ + "string", + "null" + ] + }, + "p75": { + "description": "75th percentile.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IndustryValuationDistributions": { + "description": "`distributions` block of `industry_valuation_dist`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "pb": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryValuationDistribution" + }, + { + "type": "null" + } + ], + "description": "Price-to-book distribution." + }, + "pe": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryValuationDistribution" + }, + { + "type": "null" + } + ], + "description": "Price-to-earnings distribution." + }, + "ps": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryValuationDistribution" + }, + { + "type": "null" + } + ], + "description": "Price-to-sales distribution." + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `industry_valuation_dist`. Per-indicator distribution stats\ngrouped under `distributions`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "distributions": { + "anyOf": [ + { + "$ref": "#/$defs/IndustryValuationDistributions" + }, + { + "type": "null" + } + ], + "description": "Per-indicator distribution blocks." + } + }, + "title": "IndustryValuationDistResponse", + "type": "object" +}
- Changed
institution_rating1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "InstitutionRatingAnalyst": { + "description": "Analyst consensus block of `institution_rating`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "buy": { + "description": "Number of analysts rating \"buy\".", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "consensus_rating": { + "description": "Consensus rating label.", + "type": [ + "string", + "null" + ] + }, + "hold": { + "description": "Number of analysts rating \"hold\".", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "outperform": { + "description": "Number of analysts rating \"outperform\".", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "sell": { + "description": "Number of analysts rating \"sell\".", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "target_price": { + "description": "Consensus target price.", + "type": [ + "string", + "null" + ] + }, + "underperform": { + "description": "Number of analysts rating \"underperform\".", + "format": "int64", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `institution_rating`.\n\nThe tool combines two upstream calls into\n`{\"analyst\": {...}, \"instratings\": [...]}`. Only the `analyst` fields are\ndocumented; the `instratings` payload shape is unspecified and left as raw\nJSON. Subset of documented fields; upstream may return more.", + "properties": { + "analyst": { + "anyOf": [ + { + "$ref": "#/$defs/InstitutionRatingAnalyst" + }, + { + "type": "null" + } + ], + "description": "Analyst rating consensus summary." + }, + "instratings": { + "description": "Per-institution rating list. Shape is unspecified by the tool\ndescription; passed through as raw JSON." + } + }, + "title": "InstitutionRatingResponse", + "type": "object" +}
- Changed
institution_rating_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "InstitutionRatingDetailItem": { + "description": "One per-institution record in `institution_rating_detail`'s `target.list`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "analyst": { + "description": "Analyst name.", + "type": [ + "string", + "null" + ] + }, + "firm": { + "description": "Issuing firm / institution name.", + "type": [ + "string", + "null" + ] + }, + "rating": { + "description": "Rating label.", + "type": [ + "string", + "null" + ] + }, + "target_price": { + "description": "Target price.", + "type": [ + "string", + "null" + ] + }, + "timestamp": { + "description": "Rating timestamp (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "InstitutionRatingDetailTarget": { + "description": "`target` block of `institution_rating_detail`.", + "properties": { + "list": { + "description": "Per-institution rating records.", + "items": { + "$ref": "#/$defs/InstitutionRatingDetailItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `institution_rating_detail`.\n\nDetailed historical institution ratings and target price history, grouped\nunder `target.list[]`. Subset of documented fields; upstream may return\nmore.", + "properties": { + "target": { + "anyOf": [ + { + "$ref": "#/$defs/InstitutionRatingDetailTarget" + }, + { + "type": "null" + } + ], + "description": "Target-price / rating history container." + } + }, + "title": "InstitutionRatingDetailResponse", + "type": "object" +}
- Changed
institution_rating_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "EvaluateHistoryItem": { + "description": "One rating-evaluation change in `institution_rating_history`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "date": { + "description": "Change date.", + "type": [ + "string", + "null" + ] + }, + "firm": { + "description": "Issuing firm.", + "type": [ + "string", + "null" + ] + }, + "new_rating": { + "description": "New rating.", + "type": [ + "string", + "null" + ] + }, + "old_rating": { + "description": "Prior rating.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "TargetHistoryItem": { + "description": "One target-price revision in `institution_rating_history`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "analyst": { + "description": "Analyst name.", + "type": [ + "string", + "null" + ] + }, + "date": { + "description": "Revision date.", + "type": [ + "string", + "null" + ] + }, + "firm": { + "description": "Issuing firm.", + "type": [ + "string", + "null" + ] + }, + "new_target": { + "description": "New target price.", + "type": [ + "string", + "null" + ] + }, + "old_target": { + "description": "Prior target price.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `institution_rating_history`. Two history arrays: target-price\nrevisions and rating-evaluation changes.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "evaluate_history": { + "description": "Rating-evaluation changes.", + "items": { + "$ref": "#/$defs/EvaluateHistoryItem" + }, + "type": [ + "array", + "null" + ] + }, + "target_history": { + "description": "Target-price revisions.", + "items": { + "$ref": "#/$defs/TargetHistoryItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "InstitutionRatingHistoryResponse", + "type": "object" +}
- Changed
institution_rating_industry_rank1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "InstitutionRatingIndustryRankItem": { + "description": "One peer in `institution_rating_industry_rank`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "buy_count": { + "description": "Buy rating count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "consensus_rating": { + "description": "Consensus rating label.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name.", + "type": [ + "string", + "null" + ] + }, + "sell_count": { + "description": "Sell rating count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "symbol": { + "description": "Security symbol (transformed from `counter_id`).", + "type": [ + "string", + "null" + ] + }, + "target_price": { + "description": "Target price.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `institution_rating_industry_rank`. Peers ranked by analyst\nratings.\n\nThe tool description says `list[]`, while the implementation transforms a\ntop-level `items[]` array (rewriting `counter_id` → `symbol`). Both names\nare modelled so the schema matches whichever the upstream emits. Subset of\ndocumented fields; upstream may return more.", + "properties": { + "items": { + "description": "Ranked peers (key the implementation transforms in place).", + "items": { + "$ref": "#/$defs/InstitutionRatingIndustryRankItem" + }, + "type": [ + "array", + "null" + ] + }, + "list": { + "description": "Ranked peers (description's documented key).", + "items": { + "$ref": "#/$defs/InstitutionRatingIndustryRankItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "InstitutionRatingIndustryRankResponse", + "type": "object" +}
- Changed
institutional_views1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "InstitutionalViewsMonth": { + "description": "One month in `institutional_views`'s `months`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "buy": { + "description": "Buy count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "date": { + "description": "Month date (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "hold": { + "description": "Hold count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "outperform": { + "description": "Outperform count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "sell": { + "description": "Sell count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "total": { + "description": "Total ratings.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "underperform": { + "description": "Underperform count.", + "format": "int64", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `institutional_views`. Wraps a `months` array of monthly\nrating-distribution snapshots.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "months": { + "description": "Monthly rating-distribution snapshots.", + "items": { + "$ref": "#/$defs/InstitutionalViewsMonth" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "InstitutionalViewsResponse", + "type": "object" +}
- Changed
invest_relation1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "InvestRelationItem": { + "description": "One event in `invest_relation`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "description": { + "description": "Free-text description.", + "type": [ + "string", + "null" + ] + }, + "event_date": { + "description": "Event date.", + "type": [ + "string", + "null" + ] + }, + "event_type": { + "description": "Event type.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Event title.", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Related URL.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `invest_relation`. Wraps an `items` array of IR events.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "Investor-relations events and announcements.", + "items": { + "$ref": "#/$defs/InvestRelationItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "InvestRelationResponse", + "type": "object" +}
- Changed
ipo_calendar1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IpoItem": { + "description": "A single IPO entry as it appears in the subscription / calendar / listed\nfeeds. Subset of the upstream item; field availability varies by feed and\nmarket. Numeric/price fields are stringified by the transform pipeline.", + "properties": { + "issue_price": { + "description": "Issue price (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "listing_date": { + "description": "Listing date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"HK\" / \"US\".", + "type": [ + "string", + "null" + ] + }, + "min_lot_size": { + "description": "Minimum lot size for subscription.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "IPO status (calendar feed), e.g. upcoming / listed.", + "type": [ + "string", + "null" + ] + }, + "sub_end_date": { + "description": "Subscription window end date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "sub_start_date": { + "description": "Subscription window start date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\" or \"ARM.US\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_calendar`. Passthrough of the upstream calendar payload;\nthe documented portion is `items[]`. The upstream `timestamp` is converted\nto RFC3339 by the unix-path transform.", + "properties": { + "items": { + "description": "Calendar entries for upcoming and recent IPOs.", + "items": { + "$ref": "#/$defs/IpoItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "IpoCalendarResponse", + "type": "object" +}
- Changed
ipo_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_detail`. The tool combines three upstream payloads\n(`profile`, `timeline`, `eligibility`) under one wrapper object. Each part\nis a passthrough; only the documented portions are typed here.", + "properties": { + "eligibility": { + "description": "Subscription eligibility payload (passthrough, shape upstream-defined)." + }, + "profile": { + "description": "Business overview / profile payload (passthrough, shape upstream-defined)." + }, + "timeline": { + "description": "Timeline events. The upstream payload may wrap this differently; the\ndocumented portion is a list of `{event, date}` entries." + } + }, + "title": "IpoDetailResponse", + "type": "object" +}
- Changed
ipo_listed1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IpoListedItem": { + "description": "A single recently-listed IPO entry. Subset of upstream fields; numeric and\nprice fields are stringified by the transform pipeline.", + "properties": { + "first_day_close": { + "description": "First-day close price (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "first_day_return": { + "description": "First-day return (stringified decimal / percentage).", + "type": [ + "string", + "null" + ] + }, + "issue_price": { + "description": "Issue price (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "listing_date": { + "description": "Listing date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"HK\" / \"US\".", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\".", + "type": [ + "string", + "null" + ] + }, + "volume": { + "description": "First-day trading volume.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IpoListedMarketFeed": { + "description": "One side (HK or US) of the listed feed. The documented portion is `items[]`.", + "properties": { + "items": { + "description": "Recently-listed IPO entries (documented subset of upstream fields).", + "items": { + "$ref": "#/$defs/IpoListedItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_listed`. HK and US listed feeds combined under a\n`{hk, us}` wrapper object built by the tool.", + "properties": { + "hk": { + "$ref": "#/$defs/IpoListedMarketFeed", + "description": "Hong Kong recently-listed feed." + }, + "us": { + "$ref": "#/$defs/IpoListedMarketFeed", + "description": "US recently-listed feed." + } + }, + "required": [ + "hk", + "us" + ], + "title": "IpoListedResponse", + "type": "object" +}
- Changed
ipo_order_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_order_detail`. Passthrough of a single IPO order; the\ndocumented subset is typed here. Amount fields are stringified decimals and\n`submitted_at` is RFC3339.", + "properties": { + "allotted_quantity": { + "description": "Allotted quantity after the IPO drawing.", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"HK\" / \"US\".", + "type": [ + "string", + "null" + ] + }, + "order_id": { + "description": "IPO order ID.", + "type": [ + "string", + "null" + ] + }, + "quantity": { + "description": "Subscription quantity.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Order status.", + "type": [ + "string", + "null" + ] + }, + "submitted_at": { + "description": "Order submission time (RFC3339).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\".", + "type": [ + "string", + "null" + ] + }, + "total_amount": { + "description": "Total subscription amount (stringified decimal).", + "type": [ + "string", + "null" + ] + } + }, + "title": "IpoOrderDetailResponse", + "type": "object" +}
- Changed
ipo_orders1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IpoOrderItem": { + "description": "A single IPO order entry. Subset of upstream fields; amount fields are\nstringified by the transform pipeline and `submitted_at` is RFC3339.", + "properties": { + "market": { + "description": "Market code, e.g. \"HK\" / \"US\".", + "type": [ + "string", + "null" + ] + }, + "order_id": { + "description": "IPO order ID.", + "type": [ + "string", + "null" + ] + }, + "quantity": { + "description": "Subscription quantity.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "Order status.", + "type": [ + "string", + "null" + ] + }, + "submitted_at": { + "description": "Order submission time (RFC3339).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\".", + "type": [ + "string", + "null" + ] + }, + "total_amount": { + "description": "Total subscription amount (stringified decimal).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IpoOrdersFeed": { + "description": "One side of the IPO orders feed (active or historical). The documented\nportion is `orders[]`.", + "properties": { + "orders": { + "description": "IPO order entries (documented subset of upstream fields).", + "items": { + "$ref": "#/$defs/IpoOrderItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_orders`. Active orders and order history combined under an\n`{orders, history}` wrapper object built by the tool.", + "properties": { + "history": { + "$ref": "#/$defs/IpoOrdersFeed", + "description": "Historical IPO orders feed." + }, + "orders": { + "$ref": "#/$defs/IpoOrdersFeed", + "description": "Active IPO orders feed." + } + }, + "required": [ + "orders", + "history" + ], + "title": "IpoOrdersResponse", + "type": "object" +}
- Changed
ipo_profit_loss1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IpoProfitLossItem": { + "description": "A single per-stock IPO profit/loss breakdown item. Subset of upstream\nfields; monetary and rate fields are stringified by the transform pipeline.", + "properties": { + "cost": { + "description": "Cost basis for this stock (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "current_value": { + "description": "Current market value for this stock (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "return_rate": { + "description": "Return rate for this stock (stringified decimal / percentage).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IpoProfitLossItems": { + "description": "The items side of the IPO profit/loss feed. The documented portion is\n`items[]`.", + "properties": { + "items": { + "description": "Per-stock profit/loss breakdown entries.", + "items": { + "$ref": "#/$defs/IpoProfitLossItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "IpoProfitLossSummary": { + "description": "The summary side of the IPO profit/loss feed. Documented totals are\nstringified decimals.", + "properties": { + "total_cost": { + "description": "Total cost across all IPO holdings (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "total_return": { + "description": "Total return across all IPO holdings (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "total_value": { + "description": "Total current value across all IPO holdings (stringified decimal).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_profit_loss`. Summary and per-stock breakdown combined\nunder a `{summary, items}` wrapper object built by the tool.", + "properties": { + "items": { + "$ref": "#/$defs/IpoProfitLossItems", + "description": "Per-stock breakdown items." + }, + "summary": { + "$ref": "#/$defs/IpoProfitLossSummary", + "description": "Aggregate cost/value/return totals." + } + }, + "required": [ + "summary", + "items" + ], + "title": "IpoProfitLossResponse", + "type": "object" +}
- Changed
ipo_subscriptions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "IpoItem": { + "description": "A single IPO entry as it appears in the subscription / calendar / listed\nfeeds. Subset of the upstream item; field availability varies by feed and\nmarket. Numeric/price fields are stringified by the transform pipeline.", + "properties": { + "issue_price": { + "description": "Issue price (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "listing_date": { + "description": "Listing date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"HK\" / \"US\".", + "type": [ + "string", + "null" + ] + }, + "min_lot_size": { + "description": "Minimum lot size for subscription.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "status": { + "description": "IPO status (calendar feed), e.g. upcoming / listed.", + "type": [ + "string", + "null" + ] + }, + "sub_end_date": { + "description": "Subscription window end date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "sub_start_date": { + "description": "Subscription window start date (yyyy-mm-dd).", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"6871.HK\" or \"ARM.US\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "IpoMarketFeed": { + "description": "One side (HK or US) of an IPO feed that splits results by market. Each side\nis the raw upstream payload; the documented portion is `items[]`.", + "properties": { + "items": { + "description": "IPO entries for this market (documented subset of upstream fields).", + "items": { + "$ref": "#/$defs/IpoItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `ipo_subscriptions`. HK and US subscription feeds combined under\na `{hk, us}` wrapper object built by the tool.", + "properties": { + "hk": { + "$ref": "#/$defs/IpoMarketFeed", + "description": "Hong Kong subscription / pre-filing feed." + }, + "us": { + "$ref": "#/$defs/IpoMarketFeed", + "description": "US subscription / pre-filing feed." + } + }, + "required": [ + "hk", + "us" + ], + "title": "IpoSubscriptionsResponse", + "type": "object" +}
- Changed
market_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "MarketStatusEntry": { + "properties": { + "delay_timestamp": { + "description": "Delayed-quote status timestamp (RFC3339).", + "type": [ + "string", + "null" + ] + }, + "delay_trade_status": { + "description": "Delayed-quote trading status label (same value set as `trade_status`).", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market code, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\".", + "type": [ + "string", + "null" + ] + }, + "timestamp": { + "description": "Status snapshot timestamp (RFC3339).", + "type": [ + "string", + "null" + ] + }, + "trade_status": { + "description": "Trading status label: one of Pre-Open / Trading / Lunch Break /\nPost-Trading / Closed / Pre-Market / Post-Market / Unknown.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `market_status`. Wraps a `market_time` array, one entry per\nmarket. Subset of the wire response — `trade_status` is mapped from the\nupstream numeric code to a human label, and `timestamp` is converted to\nRFC3339.", + "properties": { + "market_time": { + "description": "Per-market trading status entries.", + "items": { + "$ref": "#/$defs/MarketStatusEntry" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "MarketStatusResponse", + "type": "object" +}
- Changed
operating1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "OperatingItem": { + "description": "One record in `operating`'s `items`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "metric_name": { + "description": "Metric name (e.g. passenger traffic, cargo volume).", + "type": [ + "string", + "null" + ] + }, + "period": { + "description": "Reporting period.", + "type": [ + "string", + "null" + ] + }, + "unit": { + "description": "Unit of measure.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Metric value.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `operating`. Wraps an `items` array of operating metrics\n(HK stocks only).\n\nSubset of documented fields; upstream may return more.", + "properties": { + "items": { + "description": "Operating metric records.", + "items": { + "$ref": "#/$defs/OperatingItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "OperatingResponse", + "type": "object" +}
- Changed
rank_categories1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "RankFirstTag": { + "properties": { + "key": { + "description": "Category key.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name.", + "type": [ + "string", + "null" + ] + }, + "second_tags": { + "description": "Sub-categories. Pass a `second_tags[].key` to `rank_list`.", + "items": { + "$ref": "#/$defs/RankSecondTag" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "RankSecondTag": { + "properties": { + "key": { + "description": "Tab key to pass to `rank_list` (e.g. \"hot_all-us\").", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market this tab covers, e.g. \"US\" / \"HK\".", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `rank_categories`. Wraps a `first_tags` array of rank tab\ncategory configurations for the popularity leaderboard. Subset of the wire\nresponse.", + "properties": { + "first_tags": { + "description": "Top-level rank category tags.", + "items": { + "$ref": "#/$defs/RankFirstTag" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "RankCategoriesResponse", + "type": "object" +}
- Changed
rank_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "RankListItem": { + "properties": { + "amplitude": { + "description": "Intraday amplitude.", + "type": [ + "string", + "null" + ] + }, + "chg": { + "description": "Price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "five_day_chg": { + "description": "5-day price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "industry": { + "description": "Industry/sector name.", + "type": [ + "string", + "null" + ] + }, + "inflow": { + "description": "Net capital inflow.", + "type": [ + "string", + "null" + ] + }, + "intro": { + "description": "Short company introduction.", + "type": [ + "string", + "null" + ] + }, + "last_done": { + "description": "Latest traded price.", + "type": [ + "string", + "null" + ] + }, + "market_cap": { + "description": "Total market capitalization.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "pre_post_chg": { + "description": "Pre-/post-market price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "pre_post_price": { + "description": "Pre-/post-market price.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"700.HK\".", + "type": [ + "string", + "null" + ] + }, + "ten_day_chg": { + "description": "10-day price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "this_year_chg": { + "description": "Year-to-date price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "turnover_rate": { + "description": "Turnover rate.", + "type": [ + "string", + "null" + ] + }, + "twenty_day_chg": { + "description": "20-day price change (decimal ratio).", + "type": [ + "string", + "null" + ] + }, + "volume_rate": { + "description": "Volume ratio versus average.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `rank_list`. Wraps a `lists` array of ranked stocks for a\nleaderboard tab, plus a refresh time. Subset of the wire response.", + "properties": { + "lists": { + "description": "Ranked stock entries.", + "items": { + "$ref": "#/$defs/RankListItem" + }, + "type": [ + "array", + "null" + ] + }, + "updated_at": { + "description": "Last refresh time (RFC3339).", + "type": [ + "string", + "null" + ] + } + }, + "title": "RankListResponse", + "type": "object" +}
- Changed
screener_indicators1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ScreenerIndicator": { + "description": "A single screener indicator's metadata. The `filter_` prefix is stripped\nfrom `key` by the tool. `tech_values`, when present, is a synthesized schema\n(`{tech_key: [{value, label}, ...]}`) describing the options a technical\nindicator accepts.", + "properties": { + "default_range": { + "anyOf": [ + { + "$ref": "#/$defs/ScreenerIndicatorRange" + }, + { + "type": "null" + } + ], + "description": "Default value range for the indicator." + }, + "id": { + "description": "Indicator ID.", + "type": [ + "string", + "null" + ] + }, + "key": { + "description": "Indicator key (without the `filter_` prefix).", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Indicator display name.", + "type": [ + "string", + "null" + ] + }, + "tech_values": { + "description": "For technical indicators: synthesized schema of accepted option values,\nkeyed by technical sub-key, each mapping to a list of `{value, label}`." + }, + "unit": { + "description": "Value unit, where applicable.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "ScreenerIndicatorGroup": { + "description": "A named group of screener indicators.", + "properties": { + "group_name": { + "description": "Group display name.", + "type": [ + "string", + "null" + ] + }, + "indicators": { + "description": "Indicators in this group.", + "items": { + "$ref": "#/$defs/ScreenerIndicator" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "ScreenerIndicatorRange": { + "description": "Default value range for a screener indicator.", + "properties": { + "max": { + "description": "Default upper bound (string).", + "type": [ + "string", + "null" + ] + }, + "min": { + "description": "Default lower bound (string).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `screener_indicators`. Documented portion is `groups[]`.", + "properties": { + "groups": { + "description": "Indicator metadata grouped by category.", + "items": { + "$ref": "#/$defs/ScreenerIndicatorGroup" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ScreenerIndicatorsResponse", + "type": "object" +}
- Changed
screener_recommend_strategies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ScreenerStrategyItem": { + "description": "A single screener strategy entry. Subset of upstream fields; the change\nfigure is stringified by the transform pipeline.", + "properties": { + "description": { + "description": "Strategy description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Strategy ID. Pass to `screener_search` `strategy_id` to run, or to\n`screener_strategy` to inspect the filter conditions.", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\".", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Strategy display name.", + "type": [ + "string", + "null" + ] + }, + "risk": { + "description": "Risk classification label.", + "type": [ + "string", + "null" + ] + }, + "three_months_chg": { + "description": "Trailing three-month change (stringified decimal / percentage).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `screener_recommend_strategies` and `screener_user_strategies`.\nThe documented portion is `strategys[]`.", + "properties": { + "strategys": { + "description": "Screener strategies (note the upstream `strategys` spelling).", + "items": { + "$ref": "#/$defs/ScreenerStrategyItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ScreenerStrategiesResponse", + "type": "object" +}
- Changed
screener_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ScreenerResultIndicator": { + "description": "A single indicator value attached to a screener search result row. The\n`filter_` prefix is stripped from `key` by the tool.", + "properties": { + "key": { + "description": "Indicator key (without the `filter_` prefix).", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Indicator display name.", + "type": [ + "string", + "null" + ] + }, + "unit": { + "description": "Value unit, where applicable.", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Indicator value (stringified by the transform pipeline).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "ScreenerResultItem": { + "description": "A single screener search result row. Subset of upstream fields.", + "properties": { + "indicators": { + "description": "Per-indicator values for this row (condition + extra-return columns).", + "items": { + "$ref": "#/$defs/ScreenerResultIndicator" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"AAPL.US\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `screener_search`. Documented portion is `total` plus the\n`items[]` result rows.", + "properties": { + "items": { + "description": "Result rows for the current page.", + "items": { + "$ref": "#/$defs/ScreenerResultItem" + }, + "type": [ + "array", + "null" + ] + }, + "total": { + "description": "Total number of matching securities.", + "format": "int64", + "type": [ + "integer", + "null" + ] + } + }, + "title": "ScreenerSearchResponse", + "type": "object" +}
- Changed
screener_strategy1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ScreenerStrategyFilter": { + "description": "A single filter condition within a screener strategy. The `filter_` prefix\nis stripped from `key` by the tool so it matches `screener_indicators` and\n`screener_search` condition input.", + "properties": { + "key": { + "description": "Indicator key (without the `filter_` prefix).", + "type": [ + "string", + "null" + ] + }, + "max": { + "description": "Upper bound for the condition (string, may be empty).", + "type": [ + "string", + "null" + ] + }, + "min": { + "description": "Lower bound for the condition (string, may be empty).", + "type": [ + "string", + "null" + ] + }, + "tech_values": { + "description": "Technical-indicator value selection for technical keys. Passthrough\nobject whose shape depends on the indicator (see `screener_indicators`)." + } + }, + "type": "object" + }, + "ScreenerStrategyFilterGroup": { + "description": "The `filter` wrapper of a screener strategy, holding the condition list.", + "properties": { + "filters": { + "description": "Filter conditions making up the strategy.", + "items": { + "$ref": "#/$defs/ScreenerStrategyFilter" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `screener_strategy`. Documented portion is `market` plus the\n`filter.filters[]` condition list.", + "properties": { + "filter": { + "anyOf": [ + { + "$ref": "#/$defs/ScreenerStrategyFilterGroup" + }, + { + "type": "null" + } + ], + "description": "Filter group containing the strategy's conditions." + }, + "market": { + "description": "Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\".", + "type": [ + "string", + "null" + ] + } + }, + "title": "ScreenerStrategyResponse", + "type": "object" +}
- Changed
screener_user_strategies1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ScreenerStrategyItem": { + "description": "A single screener strategy entry. Subset of upstream fields; the change\nfigure is stringified by the transform pipeline.", + "properties": { + "description": { + "description": "Strategy description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Strategy ID. Pass to `screener_search` `strategy_id` to run, or to\n`screener_strategy` to inspect the filter conditions.", + "type": [ + "string", + "null" + ] + }, + "market": { + "description": "Market the strategy targets, e.g. \"US\" / \"HK\" / \"CN\" / \"SG\".", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Strategy display name.", + "type": [ + "string", + "null" + ] + }, + "risk": { + "description": "Risk classification label.", + "type": [ + "string", + "null" + ] + }, + "three_months_chg": { + "description": "Trailing three-month change (stringified decimal / percentage).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `screener_recommend_strategies` and `screener_user_strategies`.\nThe documented portion is `strategys[]`.", + "properties": { + "strategys": { + "description": "Screener strategies (note the upstream `strategys` spelling).", + "items": { + "$ref": "#/$defs/ScreenerStrategyItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ScreenerStrategiesResponse", + "type": "object" +}
- Changed
security_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "SecurityListItem": { + "properties": { + "name_cn": { + "description": "Security name (zh-CN).", + "type": "string" + }, + "name_en": { + "description": "Security name (en).", + "type": "string" + }, + "name_hk": { + "description": "Security name (zh-HK).", + "type": "string" + }, + "symbol": { + "description": "Security symbol, e.g. \"AAPL.US\".", + "type": "string" + } + }, + "required": [ + "symbol", + "name_cn", + "name_en", + "name_hk" + ], + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `security_list`. Top-level pagination envelope built in\n`quote::security_list` around the upstream `Vec<Security>`.", + "properties": { + "count": { + "description": "Records-per-page echoed back from the request.", + "format": "uint", + "minimum": 0, + "type": "integer" + }, + "items": { + "description": "The securities on this page.", + "items": { + "$ref": "#/$defs/SecurityListItem" + }, + "type": "array" + }, + "page": { + "description": "1-based page number echoed back from the request.", + "format": "uint", + "minimum": 0, + "type": "integer" + }, + "total": { + "description": "Total number of securities available for this market/category (before\npagination).", + "format": "uint", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "total", + "page", + "count", + "items" + ], + "title": "SecurityListResponse", + "type": "object" +}
- Changed
shareholder1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ShareholderItem": { + "description": "One holder in `shareholder`'s `shareholders`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "change": { + "description": "Change in shares.", + "type": [ + "string", + "null" + ] + }, + "change_type": { + "description": "Direction / kind of change.", + "type": [ + "string", + "null" + ] + }, + "institution": { + "description": "Institution name.", + "type": [ + "string", + "null" + ] + }, + "ratio": { + "description": "Ownership ratio.", + "type": [ + "string", + "null" + ] + }, + "reported_at": { + "description": "Report date.", + "type": [ + "string", + "null" + ] + }, + "shares": { + "description": "Shares held.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `shareholder`. Wraps a `shareholders` array.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "shareholders": { + "description": "Institutional shareholders.", + "items": { + "$ref": "#/$defs/ShareholderItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ShareholderResponse", + "type": "object" +}
- Changed
shareholder_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ShareholderTrading": { + "description": "One per-period trading record in `shareholder_detail`'s `tradings`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "accum_buy": { + "description": "Accumulated buys.", + "type": [ + "string", + "null" + ] + }, + "accum_sell": { + "description": "Accumulated sells.", + "type": [ + "string", + "null" + ] + }, + "net_buy": { + "description": "Net buys.", + "type": [ + "string", + "null" + ] + }, + "period": { + "description": "Reporting period.", + "type": [ + "string", + "null" + ] + }, + "trading_details": { + "description": "Individual trades. Empty for institutional (13F) holders; populated\nonly for insider / individual filers (Form 4).", + "items": { + "$ref": "#/$defs/ShareholderTradingDetail" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "ShareholderTradingDetail": { + "description": "One trade in `shareholder_detail`'s `trading_details`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "filing_date": { + "description": "Filing date.", + "type": [ + "string", + "null" + ] + }, + "security_type": { + "description": "Security type.", + "type": [ + "string", + "null" + ] + }, + "trading_date": { + "description": "Trade date.", + "type": [ + "string", + "null" + ] + }, + "trading_price": { + "description": "Trade price.", + "type": [ + "string", + "null" + ] + }, + "trading_shares": { + "description": "Number of shares traded.", + "type": [ + "string", + "null" + ] + }, + "trading_type": { + "description": "Trade type (buy / sell).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `shareholder_detail`. A single holder's holding and trade\nhistory.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "holding_periods": { + "description": "Holding periods. Shape unspecified by the description; raw JSON." + }, + "holding_summary": { + "description": "Holding summary. Shape unspecified by the description; raw JSON." + }, + "name": { + "description": "Holder name.", + "type": [ + "string", + "null" + ] + }, + "owner_source": { + "description": "Holder source: Company / Institution / Person / Insider.", + "type": [ + "string", + "null" + ] + }, + "trading_periods": { + "description": "Trading periods. Shape unspecified by the description; raw JSON." + }, + "tradings": { + "description": "Per-period trading records.", + "items": { + "$ref": "#/$defs/ShareholderTrading" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ShareholderDetailResponse", + "type": "object" +}
- Changed
shareholder_top1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ShareholderTopHolder": { + "description": "One holder in `shareholder_top`'s `share_holders`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "filing_date": { + "description": "Filing date.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Holder name.", + "type": [ + "string", + "null" + ] + }, + "object_id": { + "description": "Holder object id. Pass to `shareholder_detail`.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "percent_shares_held": { + "description": "Percentage of shares held.", + "type": [ + "string", + "null" + ] + }, + "shares_changed": { + "description": "Change in shares held.", + "type": [ + "string", + "null" + ] + }, + "shares_held": { + "description": "Shares held.", + "type": [ + "string", + "null" + ] + }, + "title": { + "description": "Holder title / role.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "ShareholderTopPeriod": { + "description": "One period snapshot in `shareholder_top`'s `info`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "period": { + "description": "Reporting period.", + "type": [ + "string", + "null" + ] + }, + "share_holders": { + "description": "Holders for this period.", + "items": { + "$ref": "#/$defs/ShareholderTopHolder" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `shareholder_top`. Wraps an `info` array of per-period\nsnapshots, each with a `share_holders` list.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "info": { + "description": "Per-period holder snapshots.", + "items": { + "$ref": "#/$defs/ShareholderTopPeriod" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ShareholderTopResponse", + "type": "object" +}
- Changed
sharelist_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `sharelist_create`. The created sharelist object; documented\nfields are `id`, `name`, and `description`.", + "properties": { + "description": { + "description": "List description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Newly-created sharelist ID.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "List name.", + "type": [ + "string", + "null" + ] + } + }, + "title": "SharelistCreateResponse", + "type": "object" +}
- Changed
sharelist_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "SharelistConstituent": { + "description": "A single constituent of a sharelist detail. Subset of upstream fields;\nquote fields are stringified by the transform pipeline.", + "properties": { + "change_rate": { + "description": "Change rate (stringified decimal / percentage).", + "type": [ + "string", + "null" + ] + }, + "last_done": { + "description": "Latest traded price (stringified decimal).", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"AAPL.US\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `sharelist_detail`. Subset of the upstream detail payload: list\nmetadata plus the constituent rows. Additional quote and subscription\nfields may be present but are not enumerated here.", + "properties": { + "constituents": { + "description": "Constituent securities with quote snapshots.", + "items": { + "$ref": "#/$defs/SharelistConstituent" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "List description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "Sharelist ID.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "List name.", + "type": [ + "string", + "null" + ] + } + }, + "title": "SharelistDetailResponse", + "type": "object" +}
- Changed
sharelist_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "SharelistSummary": { + "description": "A single sharelist summary entry. Subset of upstream fields.", + "properties": { + "creator": { + "description": "Creator info (`sharelist_popular` only); passthrough, shape\nupstream-defined." + }, + "description": { + "description": "List description.", + "type": [ + "string", + "null" + ] + }, + "follower_count": { + "description": "Number of followers / subscribers of this list.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "id": { + "description": "Sharelist ID.", + "type": [ + "string", + "null" + ] + }, + "is_owner": { + "description": "Whether the current user owns this list (`sharelist_list` only).", + "type": [ + "boolean", + "null" + ] + }, + "name": { + "description": "List name.", + "type": [ + "string", + "null" + ] + }, + "symbol_count": { + "description": "Number of securities in the list.", + "format": "int64", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `sharelist_list` and `sharelist_popular`. Documented portion is\n`lists[]`.", + "properties": { + "lists": { + "description": "Sharelist summaries.", + "items": { + "$ref": "#/$defs/SharelistSummary" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "SharelistListResponse", + "type": "object" +}
- Changed
sharelist_popular1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "SharelistSummary": { + "description": "A single sharelist summary entry. Subset of upstream fields.", + "properties": { + "creator": { + "description": "Creator info (`sharelist_popular` only); passthrough, shape\nupstream-defined." + }, + "description": { + "description": "List description.", + "type": [ + "string", + "null" + ] + }, + "follower_count": { + "description": "Number of followers / subscribers of this list.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "id": { + "description": "Sharelist ID.", + "type": [ + "string", + "null" + ] + }, + "is_owner": { + "description": "Whether the current user owns this list (`sharelist_list` only).", + "type": [ + "boolean", + "null" + ] + }, + "name": { + "description": "List name.", + "type": [ + "string", + "null" + ] + }, + "symbol_count": { + "description": "Number of securities in the list.", + "format": "int64", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `sharelist_list` and `sharelist_popular`. Documented portion is\n`lists[]`.", + "properties": { + "lists": { + "description": "Sharelist summaries.", + "items": { + "$ref": "#/$defs/SharelistSummary" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "SharelistListResponse", + "type": "object" +}
- Changed
short_trades1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ShortTradesItem": { + "properties": { + "balance": { + "description": "HK only — outstanding short balance (HKD).", + "type": [ + "string", + "null" + ] + }, + "close": { + "description": "Close price for the day.", + "type": [ + "string", + "null" + ] + }, + "market_vol": { + "description": "HK only — total market trading volume for the day.", + "type": [ + "string", + "null" + ] + }, + "nasdaq_vol": { + "description": "US only — NASDAQ short volume.", + "type": [ + "string", + "null" + ] + }, + "nyse_vol": { + "description": "US only — NYSE short volume.", + "type": [ + "string", + "null" + ] + }, + "rate": { + "description": "Short volume as a ratio of total volume (decimal, e.g. 0.36 = 36%).", + "type": [ + "string", + "null" + ] + }, + "short_vol": { + "description": "Daily short-sale volume in shares.", + "type": [ + "string", + "null" + ] + }, + "timestamp": { + "description": "Trade date (RFC3339).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `short_trades`. Wraps a unified `data` array of daily short-sale\nvolume history for HK or US stocks. Market-specific fields are populated\nonly for their respective market (US: `nasdaq_vol`/`nyse_vol`; HK:\n`balance`/`market_vol`). Subset of the wire response.", + "properties": { + "data": { + "description": "Daily short-sale volume entries.", + "items": { + "$ref": "#/$defs/ShortTradesItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ShortTradesResponse", + "type": "object" +}
- Changed
statement_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "StatementItem": { + "properties": { + "dt": { + "description": "Statement date as a `yyyymmdd` integer (e.g. `20240115`).", + "format": "int32", + "type": "integer" + }, + "file_key": { + "description": "Opaque file key identifying this statement. Pass to `statement_export`\nto obtain a pre-signed download URL.", + "type": "string" + } + }, + "required": [ + "dt", + "file_key" + ], + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `statement_list`.\n\nWraps a `list` array of statement entries. The SDK's `StatementItem`\n(`{ dt: i32, file_key: String }`) is emitted unchanged by the transform\npipeline: `dt` is a plain integer date (`yyyymmdd`, e.g. `20240115`) that is\nnot a `*_at` field and so is left as a number, and `file_key` does not match\nthe counter_id pattern.", + "properties": { + "list": { + "description": "Available statements in the requested range.", + "items": { + "$ref": "#/$defs/StatementItem" + }, + "type": "array" + } + }, + "required": [ + "list" + ], + "title": "StatementListResponse", + "type": "object" +}
- Changed
top_movers1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "TopMoverEvent": { + "properties": { + "alert_reason": { + "description": "Human-readable reason for the alert.", + "type": [ + "string", + "null" + ] + }, + "alert_type": { + "description": "Alert type/category.", + "type": [ + "string", + "null" + ] + }, + "stock": { + "anyOf": [ + { + "$ref": "#/$defs/TopMoverStock" + }, + { + "type": "null" + } + ], + "description": "The stock that moved." + }, + "timestamp": { + "description": "Event time (RFC3339).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "TopMoverStock": { + "properties": { + "change": { + "description": "Price change (decimal ratio, e.g. 0.0445 = +4.45%).", + "type": [ + "string", + "null" + ] + }, + "intro": { + "description": "Short company introduction.", + "type": [ + "string", + "null" + ] + }, + "labels": { + "description": "Tag labels associated with the stock.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "last_done": { + "description": "Latest traded price.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name of the security.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol, e.g. \"700.HK\".", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `top_movers`. Wraps an `events` array of stocks whose price\nfluctuation exceeded the 20-trading-day standard deviation, with correlated\nnews reasons, plus pagination metadata. Subset of the wire response.", + "properties": { + "events": { + "description": "Mover events.", + "items": { + "$ref": "#/$defs/TopMoverEvent" + }, + "type": [ + "array", + "null" + ] + }, + "next_params": { + "description": "Pagination cursor. Pass back verbatim as `next_params` to fetch the\nnext page. Opaque object — exact fields are an implementation detail." + }, + "updated_at": { + "description": "Last refresh time (RFC3339).", + "type": [ + "string", + "null" + ] + } + }, + "title": "TopMoversResponse", + "type": "object" +}
- Changed
topic_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `topic_create`. The handler wraps the new topic ID in a single\n`{ \"id\": ... }` object.", + "properties": { + "id": { + "description": "ID of the newly-created topic. Pass to `topic_detail` / `topic_replies`.", + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "TopicCreateResponse", + "type": "object" +}
- Changed
topic_create_reply1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "TopicAuthor": { + "description": "Author of a topic or reply.", + "properties": { + "avatar": { + "description": "Avatar URL.", + "type": "string" + }, + "member_id": { + "description": "Member ID.", + "type": "string" + }, + "name": { + "description": "Display name.", + "type": "string" + } + }, + "required": [ + "member_id", + "name", + "avatar" + ], + "type": "object" + }, + "TopicImage": { + "description": "An image attached to a topic or reply.", + "properties": { + "lg": { + "description": "Large image URL.", + "type": "string" + }, + "sm": { + "description": "Small thumbnail URL.", + "type": "string" + }, + "url": { + "description": "Original image URL.", + "type": "string" + } + }, + "required": [ + "url", + "sm", + "lg" + ], + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `topic_create_reply`. The created reply.\n\nSDK-typed (`longbridge::content::TopicReply`) and serialized via `tool_json`.\n`created_at` is emitted as an RFC3339 string.", + "properties": { + "author": { + "$ref": "#/$defs/TopicAuthor", + "description": "Reply author." + }, + "body": { + "description": "Reply body (plain text).", + "type": "string" + }, + "comments_count": { + "description": "Nested replies count.", + "format": "int32", + "type": "integer" + }, + "created_at": { + "description": "Created time (RFC3339).", + "type": "string" + }, + "id": { + "description": "Reply ID.", + "type": "string" + }, + "images": { + "description": "Attached images.", + "items": { + "$ref": "#/$defs/TopicImage" + }, + "type": "array" + }, + "likes_count": { + "description": "Likes count.", + "format": "int32", + "type": "integer" + }, + "reply_to_id": { + "description": "Parent reply ID (`\"0\"` means top-level).", + "type": "string" + }, + "topic_id": { + "description": "Topic ID this reply belongs to.", + "type": "string" + } + }, + "required": [ + "id", + "topic_id", + "body", + "reply_to_id", + "author", + "images", + "likes_count", + "comments_count", + "created_at" + ], + "title": "TopicCreateReplyResponse", + "type": "object" +}
- Changed
topic_detail1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "TopicAuthor": { + "description": "Author of a topic or reply.", + "properties": { + "avatar": { + "description": "Avatar URL.", + "type": "string" + }, + "member_id": { + "description": "Member ID.", + "type": "string" + }, + "name": { + "description": "Display name.", + "type": "string" + } + }, + "required": [ + "member_id", + "name", + "avatar" + ], + "type": "object" + }, + "TopicImage": { + "description": "An image attached to a topic or reply.", + "properties": { + "lg": { + "description": "Large image URL.", + "type": "string" + }, + "sm": { + "description": "Small thumbnail URL.", + "type": "string" + }, + "url": { + "description": "Original image URL.", + "type": "string" + } + }, + "required": [ + "url", + "sm", + "lg" + ], + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `topic_detail`. Full details of a single community topic.\n\nSDK-typed (`longbridge::content::OwnedTopic`) and serialized via `tool_json`.\n`created_at` / `updated_at` are emitted as RFC3339 strings.", + "properties": { + "author": { + "$ref": "#/$defs/TopicAuthor", + "description": "Topic author." + }, + "body": { + "description": "Markdown body.", + "type": "string" + }, + "comments_count": { + "description": "Comments count.", + "format": "int32", + "type": "integer" + }, + "created_at": { + "description": "Created time (RFC3339).", + "type": "string" + }, + "description": { + "description": "Plain-text excerpt / description.", + "type": "string" + }, + "detail_url": { + "description": "URL to the full topic page.", + "type": "string" + }, + "hashtags": { + "description": "Hashtag names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Topic ID.", + "type": "string" + }, + "images": { + "description": "Attached images.", + "items": { + "$ref": "#/$defs/TopicImage" + }, + "type": "array" + }, + "likes_count": { + "description": "Likes count.", + "format": "int32", + "type": "integer" + }, + "shares_count": { + "description": "Shares count.", + "format": "int32", + "type": "integer" + }, + "tickers": { + "description": "Related stock tickers, format `<CODE>.<MARKET>` (e.g. \"TSLA.US\").", + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "description": "Title.", + "type": "string" + }, + "topic_type": { + "description": "Content type: \"article\" or \"post\".", + "type": "string" + }, + "updated_at": { + "description": "Last updated time (RFC3339).", + "type": "string" + }, + "views_count": { + "description": "Views count.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "id", + "title", + "description", + "body", + "author", + "tickers", + "hashtags", + "images", + "likes_count", + "comments_count", + "views_count", + "shares_count", + "topic_type", + "detail_url", + "created_at", + "updated_at" + ], + "title": "TopicDetailResponse", + "type": "object" +}
- Changed
update_watchlist_group1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `update_watchlist_group`.", + "properties": { + "id": { + "description": "The updated watchlist group ID (echoed from the request).", + "format": "int64", + "type": "integer" + }, + "updated": { + "description": "Always `true` on success.", + "type": "boolean" + } + }, + "required": [ + "id", + "updated" + ], + "title": "UpdateWatchlistGroupResponse", + "type": "object" +}
- Changed
valuation1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ValuationMetric": { + "description": "A single valuation indicator block in `valuation`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "5yr_avg": { + "description": "5-year average. (camelCase `5yr_avg` per description.)", + "type": [ + "string", + "null" + ] + }, + "current": { + "description": "Current value.", + "type": [ + "string", + "null" + ] + }, + "industry_avg": { + "description": "Industry average.", + "type": [ + "string", + "null" + ] + }, + "percentile": { + "description": "Historical percentile.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "ValuationMetrics": { + "description": "`metrics` block of `valuation`. Each indicator carries the same shape.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "dividend_yield": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationMetric" + }, + { + "type": "null" + } + ], + "description": "Dividend-yield block." + }, + "pb": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationMetric" + }, + { + "type": "null" + } + ], + "description": "Price-to-book block." + }, + "pe": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationMetric" + }, + { + "type": "null" + } + ], + "description": "Price-to-earnings block." + }, + "ps": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationMetric" + }, + { + "type": "null" + } + ], + "description": "Price-to-sales block." + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `valuation`. The valuation overview groups per-metric blocks\nunder `metrics`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "metrics": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationMetrics" + }, + { + "type": "null" + } + ], + "description": "Valuation metric blocks keyed by indicator." + } + }, + "title": "ValuationResponse", + "type": "object" +}
- Changed
valuation_comparison1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ValuationComparisonHistoryPoint": { + "description": "One history point in `valuation_comparison`'s nested `history`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "date": { + "description": "Sample date (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "pb": { + "description": "Price-to-book at this date.", + "type": [ + "string", + "null" + ] + }, + "pe": { + "description": "Price-to-earnings at this date.", + "type": [ + "string", + "null" + ] + }, + "ps": { + "description": "Price-to-sales at this date.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "ValuationComparisonItem": { + "description": "One stock in `valuation_comparison`'s `list`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "history": { + "description": "Per-date valuation history.", + "items": { + "$ref": "#/$defs/ValuationComparisonHistoryPoint" + }, + "type": [ + "array", + "null" + ] + }, + "market_value": { + "description": "Market value.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Display name.", + "type": [ + "string", + "null" + ] + }, + "pb": { + "description": "Price-to-book.", + "type": [ + "string", + "null" + ] + }, + "pe": { + "description": "Price-to-earnings.", + "type": [ + "string", + "null" + ] + }, + "price_close": { + "description": "Latest close price.", + "type": [ + "string", + "null" + ] + }, + "ps": { + "description": "Price-to-sales.", + "type": [ + "string", + "null" + ] + }, + "symbol": { + "description": "Security symbol (transformed from `counter_id`).", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `valuation_comparison`. Wraps a `list` of compared stocks.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "list": { + "description": "Compared stocks (primary + peers).", + "items": { + "$ref": "#/$defs/ValuationComparisonItem" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "ValuationComparisonResponse", + "type": "object" +}
- Changed
valuation_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "ValuationHistoryBlock": { + "description": "`history` block of `valuation_history`.", + "properties": { + "metrics": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationHistoryMetrics" + }, + { + "type": "null" + } + ], + "description": "Per-indicator time series." + } + }, + "type": "object" + }, + "ValuationHistoryMetrics": { + "description": "`history.metrics` block of `valuation_history`. Each indicator is an array\nof time-series samples.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "dividend_yield": { + "description": "Dividend-yield series.", + "items": { + "$ref": "#/$defs/ValuationHistoryPoint" + }, + "type": [ + "array", + "null" + ] + }, + "pb": { + "description": "Price-to-book series.", + "items": { + "$ref": "#/$defs/ValuationHistoryPoint" + }, + "type": [ + "array", + "null" + ] + }, + "pe": { + "description": "Price-to-earnings series.", + "items": { + "$ref": "#/$defs/ValuationHistoryPoint" + }, + "type": [ + "array", + "null" + ] + }, + "ps": { + "description": "Price-to-sales series.", + "items": { + "$ref": "#/$defs/ValuationHistoryPoint" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + }, + "ValuationHistoryPoint": { + "description": "One sample in a `valuation_history` metric time series.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "timestamp": { + "description": "Sample timestamp (RFC3339; rewritten from a unix-epoch field).", + "type": [ + "string", + "null" + ] + }, + "value": { + "description": "Metric value at this timestamp.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } + }, + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Returned by `valuation_history`. Time-series valuation metrics grouped\nunder `history.metrics`.\n\nSubset of documented fields; upstream may return more.", + "properties": { + "history": { + "anyOf": [ + { + "$ref": "#/$defs/ValuationHistoryBlock" + }, + { + "type": "null" + } + ], + "description": "History container." + } + }, + "title": "ValuationHistoryResponse", + "type": "object" +}
3 tool updates
v0.4.9- Changed
calc_indexes3 fields changed- added
Input schema / properties / indexes / defaultAdded value: +[] - changed
Input schema / properties / indexes / descriptionPrevious value: -"Calc indexes: 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"New value: +"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" - changed
Input schema / requiredPrevious value: -[ - "symbols", - "indexes" -]New value: +[ + "symbols" +]
- Changed
candlesticks9 fields changed- added
Input schema / properties / count / defaultAdded value: +100 - changed
Input schema / properties / count / descriptionPrevious value: -"Number of candlesticks (max 1000)"New value: +"Number of candlesticks (optional, max 1000; default 100)" - added
Input schema / properties / forward_adjust / defaultAdded value: +false - changed
Input schema / properties / forward_adjust / descriptionPrevious value: -"Whether to forward-adjust for splits/dividends"New value: +"Whether to forward-adjust for splits/dividends (default: false / no adjust)" - added
Input schema / properties / period / defaultAdded value: +"day" - changed
Input schema / properties / period / descriptionPrevious value: -"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year"New value: +"Period: 1m, 5m, 15m, 30m, 60m, day, week, month, year (default: day)" - added
Input schema / properties / trade_sessions / defaultAdded value: +"all" - changed
Input schema / properties / trade_sessions / descriptionPrevious value: -"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market)"New value: +"Trade sessions: \"intraday\" (regular hours only) or \"all\" (include pre-market and post-market; default \"all\")" - changed
Input schema / requiredPrevious value: -[ - "symbol", - "period", - "count", - "forward_adjust", - "trade_sessions" -]New value: +[ + "symbol" +]
- Changed
estimate_max_purchase_quantity5 fields changed- added
Input schema / properties / order_type / defaultAdded value: +"LO" - changed
Input schema / properties / order_type / descriptionPrevious value: -"Order type: LO (Limit Order) / ELO (Enhanced Limit Order) / MO (Market Order) / AO (At-auction) / ALO (At-auction Limit Order)"New value: +"Order type, case-insensitive (default: LO): LO (Limit Order) / ELO (Enhanced Limit Order) / MO (Market Order) / AO (At-auction) / ALO (At-auction Limit Order)" - added
Input schema / properties / side / defaultAdded value: +"Buy" - changed
Input schema / properties / side / descriptionPrevious value: -"Buy or Sell"New value: +"Buy or Sell (case-insensitive; default: Buy)" - changed
Input schema / requiredPrevious value: -[ - "symbol", - "side", - "order_type" -]New value: +[ + "symbol" +]
145 tool updates
v0.4.5- Added
account_balance - Added
ah_premium - Added
ah_premium_intraday - Added
alert_add - Added
alert_delete - Added
alert_disable - Added
alert_enable - Added
alert_list - Added
anomaly - Added
bank_cards - Added
broker_holding - Added
broker_holding_daily - Added
broker_holding_detail - Added
brokers - Added
business_segments - Added
business_segments_history - Added
calc_indexes - Added
cancel_order - Added
candlesticks - Added
capital_distribution - Added
capital_flow - Added
cash_flow - Added
company - Added
consensus - Added
constituent - Added
corp_action - Added
create_watchlist_group - Added
dca_check - Added
dca_create - Added
dca_history - Added
dca_list - Added
dca_pause - Added
dca_resume - Added
dca_stats - Added
dca_stop - Added
dca_update - Added
delete_watchlist_group - Added
deposits - Added
depth - Added
dividend - Added
dividend_detail - Added
estimate_max_purchase_quantity - Added
exchange_rate - Added
executive - Added
filings - Added
finance_calendar - Added
financial_report - Added
financial_report_latest - Added
financial_report_snapshot - Added
financial_statement - Added
forecast_eps - Added
fund_holder - Added
fund_positions - Added
history_candlesticks_by_date - Added
history_candlesticks_by_offset - Added
history_executions - Added
history_market_temperature - Added
history_orders - Added
industry_peers - Added
industry_rank - Added
industry_valuation - Added
industry_valuation_dist - Added
institution_rating - Added
institution_rating_detail - Added
institution_rating_history - Added
institution_rating_industry_rank - Added
institutional_views - Added
intraday - Added
invest_relation - Added
ipo_calendar - Added
ipo_detail - Added
ipo_listed - Added
ipo_order_detail - Added
ipo_orders - Added
ipo_profit_loss - Added
ipo_subscriptions - Added
margin_ratio - Added
market_status - Added
market_temperature - Added
news - Added
news_search - Added
now - Added
operating - Added
option_chain_expiry_date_list - Added
option_chain_info_by_date - Added
option_quote - Added
option_volume - Added
option_volume_daily - Added
order_detail - Added
participants - Added
profit_analysis - Added
profit_analysis_detail - Added
quant_run - Added
quote - Added
rank_categories - Added
rank_list - Added
replace_order - Added
screener_indicators - Added
screener_recommend_strategies - Added
screener_search - Added
screener_strategy - Added
screener_user_strategies - Added
security_list - Added
shareholder - Added
shareholder_detail - Added
shareholder_top - Added
sharelist_add - Added
sharelist_create - Added
sharelist_delete - Added
sharelist_detail - Added
sharelist_list - Added
sharelist_popular - Added
sharelist_remove - Added
sharelist_sort - Added
short_margin - Added
short_positions - Added
short_trades - Added
statement_export - Added
statement_list - Added
static_info - Added
stock_positions - Added
submit_order - Added
today_executions - Added
today_orders - Added
top_movers - Added
topic - Added
topic_create - Added
topic_create_reply - Added
topic_detail - Added
topic_replies - Added
topic_search - Added
trade_stats - Added
trades - Added
trading_days - Added
trading_session - Added
update_watchlist_group - Added
valuation - Added
valuation_comparison - Added
valuation_history - Added
valuation_rank - Added
warrant_issuers - Added
warrant_list - Added
warrant_quote - Added
watchlist - Added
withdrawals
133 tool updates
v0.4.0- Removed
account_balance - Removed
ah_premium - Removed
ah_premium_intraday - Removed
alert_add - Removed
alert_delete - Removed
alert_disable - Removed
alert_enable - Removed
alert_list - Removed
anomaly - Removed
bank_cards - Removed
broker_holding - Removed
broker_holding_daily - Removed
broker_holding_detail - Removed
brokers - Removed
business_segments - Removed
business_segments_history - Removed
calc_indexes - Removed
cancel_order - Removed
candlesticks - Removed
capital_distribution - Removed
capital_flow - Removed
cash_flow - Removed
company - Removed
consensus - Removed
constituent - Removed
corp_action - Removed
create_watchlist_group - Removed
dca_check - Removed
dca_create - Removed
dca_history - Removed
dca_list - Removed
dca_pause - Removed
dca_resume - Removed
dca_stats - Removed
dca_stop - Removed
dca_update - Removed
delete_watchlist_group - Removed
deposits - Removed
depth - Removed
dividend - Removed
dividend_detail - Removed
estimate_max_purchase_quantity - Removed
exchange_rate - Removed
executive - Removed
filings - Removed
finance_calendar - Removed
financial_report - Removed
financial_report_latest - Removed
financial_report_snapshot - Removed
financial_statement - Removed
forecast_eps - Removed
fund_holder - Removed
fund_positions - Removed
history_candlesticks_by_date - Removed
history_candlesticks_by_offset - Removed
history_executions - Removed
history_market_temperature - Removed
history_orders - Removed
industry_peers - Removed
industry_rank - Removed
industry_valuation - Removed
industry_valuation_dist - Removed
institution_rating - Removed
institution_rating_detail - Removed
institution_rating_history - Removed
institution_rating_industry_rank - Removed
institutional_views - Removed
intraday - Removed
invest_relation - Removed
ipo_calendar - Removed
ipo_detail - Removed
ipo_listed - Removed
ipo_order_detail - Removed
ipo_orders - Removed
ipo_profit_loss - Removed
ipo_subscriptions - Removed
margin_ratio - Removed
market_status - Removed
market_temperature - Removed
news - Removed
news_search - Removed
now - Removed
operating - Removed
option_chain_expiry_date_list - Removed
option_chain_info_by_date - Removed
option_quote - Removed
option_volume - Removed
option_volume_daily - Removed
order_detail - Removed
participants - Removed
profit_analysis - Removed
profit_analysis_detail - Removed
quant_run - Removed
quote - Removed
replace_order - Removed
security_list - Removed
shareholder - Removed
sharelist_add - Removed
sharelist_create - Removed
sharelist_delete - Removed
sharelist_detail - Removed
sharelist_list - Removed
sharelist_popular - Removed
sharelist_remove - Removed
sharelist_sort - Removed
short_margin - Removed
short_positions - Removed
statement_export - Removed
statement_list - Removed
static_info - Removed
stock_positions - Removed
submit_order - Removed
today_executions - Removed
today_orders - Removed
topic - Removed
topic_create - Removed
topic_create_reply - Removed
topic_detail - Removed
topic_replies - Removed
topic_search - Removed
trade_stats - Removed
trades - Removed
trading_days - Removed
trading_session - Removed
update_watchlist_group - Removed
valuation - Removed
valuation_history - Removed
valuation_rank - Removed
warrant_issuers - Removed
warrant_list - Removed
warrant_quote - Removed
watchlist - Removed
withdrawals
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.
Market analyst tools + AI agent: crypto, US equities, options, Korea, fundamentals, macro, backtests
1
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables trading and market analysis through Tiger Brokers API integration. Provides real-time market data, portfolio management, order execution, and technical analysis tools with a comprehensive web dashboard for monitoring.7-
- 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