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 response schemas available as MCP resources.
Built in Rust with rmcp and axum.
Related MCP server: Stock MCP Server
Filter tool responses with jq
Every tool accepts an optional _jq string in its arguments. The expression runs
on the complete returned JSON, after the normal response serialization. The _jq
name is reserved for response filtering to avoid conflicts with business parameters.
Usage guidance is sent once in the MCP initialize response's instructions;
each tool schema declares only the optional parameter name and type.
For example:
{
"name": "quote",
"arguments": {
"symbols": ["AAPL.US", "MSFT.US"],
"_jq": "map({symbol, last_done})"
}
}Use .data[:5] to take the first five entries of a data array,
.data | map(select(.price > 10)) to select rows, or {total: .total} to
project fields. Expressions use the embedded jaq
engine's jq-compatible syntax; no separate jq executable is needed.
Omit
_jq(or passnull) to preserve the original response.One output value is returned directly, multiple values as an array, and no values as
[]. Scalars and arrays are JSON text; objects also appear instructuredContent, containing only the filtered fields.Plain text responses are available as JSON strings. Multiple content blocks without structured content are available as an array.
Tool errors and permission/no-data explanations remain unfiltered.
Empty, invalid, or non-string expressions are rejected before the tool runs. If filtering fails at runtime, the response explicitly says the tool already executed. Do not automatically retry writes such as placing an order.
Environment access, filesystem imports, and logging filters are unavailable. Output is limited to 10,000 values and 8 MiB; exceeding a limit returns an error rather than a partial result.
Because filters can change the response shape, tools do not advertise a fixed
outputSchema. Original typed schemas remain available through resources/list
and resources/read at lb://tools/{tool-name}/output-schema for schema-backed tools.
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 |
Canary upstream |
|
|
| Talk to the Longbridge canary environment ( |
Upstream endpoints are fixed by the mode, not by the environment:
Production (default) | Canary ( | |
OpenAPI |
|
|
Quote WebSocket |
|
|
Trade WebSocket |
|
|
OAuth / connect page |
|
|
Canary uses the -global gateway, not openapi.longbridge.xyz: only the former is CloudFront-fronted and performs x-dc-region data-center routing, which this server depends on to serve us_- and ap_-prefixed credentials from one process.
All three are set explicitly on the SDK, so LONGBRIDGE_HTTP_URL, LONGBRIDGE_QUOTE_WS_URL, LONGBRIDGE_TRADE_WS_URL, their LONGPORT_* aliases, LONGBRIDGE_REGION, and a .env file are all inert — as is the SDK's geolocation probe, which means the openapi.longbridge.cn access point is never selected. Which data center serves a request is unaffected: that is decided by the x-dc-region header the SDK derives from the credential's us_ / ap_ prefix.
Advanced environment variables — most deployments never touch these; they exist for SDK debugging and edge/global-entry deployments.
Variable | Default | Description |
|
| Config file directory |
| (none) | Comma-separated hostnames accepted from the edge-injected |
| (none) | Authorization-server URL advertised to requests arriving via an allowlisted |
|
| 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
164 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 |
|---|---|---|---|
| _jq | No | ||
| 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 readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the return format (balances[]{...}) and the filter behavior, which is useful but does not go beyond what annotations already imply. 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?
Two concise sentences. The first states the purpose and return fields, the second gives filter guidance. Front-loaded, no redundant 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 annotations covering safety, the description is nearly complete. It lists return fields and filter behavior. The main gap is the undocumented '_jq' parameter and lack of explanation for terms like 'risk_level' or 'margin_call', but these are likely self-explanatory in a financial 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?
The schema describes only the 'currency' parameter (50% coverage); 'currency' is also explained in the description with examples, adding meaning beyond the schema. However, '_jq' is not described in either the schema or the description, leaving a gap. The description partially compensates for the coverage shortfall but not completely.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Get account cash balance and asset summary.' It specifies the resource (account) and the verb (get), and lists the exact return fields, making it distinct from siblings like stock_positions or bank_cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. It mentions filtering by currency but gives no exclusions or alternative recommendations, leaving the agent to infer usage from the purpose. With over 100 siblings, some differentiation would be helpful, but the purpose is clear enough for basic selection.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, indicating this is a non-read, non-idempotent operation. The description adds that it 'Returns created alert object,' which is useful behavioral context. However, it doesn't disclose side effects like whether adding an alert overwrites existing alerts, whether there are limits on the number of alerts, or whether the operation requires authentication. The description doesn't contradict annotations, but it doesn't add much beyond what annotations already imply.
Agents need to know what a tool does to the 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 and front-loaded: it starts with the action ('Add a price alert'), then explains the key parameters in a compact format. Every sentence earns its place, and the return value is mentioned at the end. 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 creation tool with no output schema, the description covers the essential aspects: what it does, the key parameters, and the return value. It doesn't mention error cases, rate limits, or prerequisites (e.g., authentication), but these are not typically required for a simple alert creation tool. The description is complete enough for an agent to invoke the tool correctly, though it could benefit from noting that the alert is created for the authenticated user.
Complex tools with many parameters or behaviors need more documentation. 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 80%, so the schema already documents most parameters. The description adds value by explaining the semantics of 'condition' (price_rise/price_fall vs percent_rise/percent_fall) and 'frequency' (once/daily/every), which clarifies the meaning of the 'price' parameter (threshold price or percentage value). The description also clarifies that 'price' is the threshold value, which is not fully explicit in the schema. The only undocumented parameter is '_jq', which is likely a query parameter and not critical for the agent's 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 the tool's purpose: 'Add a price alert.' It specifies the resource (price alert) and the action (add), and distinguishes it from sibling tools like alert_delete, alert_disable, alert_enable, and alert_list. The description also enumerates the condition and frequency options, making the tool's scope 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 provides clear context for when to use this tool: when creating a price alert. It explains the condition and frequency parameters, which are essential for correct usage. However, it does not explicitly state when not to use it or mention alternatives (e.g., for managing existing alerts, use alert_list/alert_delete/alert_enable/alert_disable). The sibling names imply these alternatives, but the description itself doesn't route the agent away from them.
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 |
|---|---|---|---|
| _jq | No | ||
| 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, so the description correctly avoids repeating those. It adds value by specifying that it returns the upstream API response on success and errors on an invalid alert_id, which is useful behavioral context beyond the annotations. No contradictions found.
Agents need to know what a tool does to the 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 fluff. The core action and identifier are front-loaded, and the error/return behavior is stated efficiently. 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?
For a simple delete operation, the description covers the essential details: what to pass, where the ID comes from, what to expect on success, and the error condition. Annotations already handle the destructive and idempotent hints. No output schema exists, so the return value description is sufficient. It is complete enough for an agent to call 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 only 50% (alert_id has a minimal schema description, _jq has none). The description compensates for alert_id by clarifying it is a numeric string from alert_list, but it does not explain the optional _jq parameter. While the main parameter is well covered, the secondary one remains undocumented, so the description only partially bridges the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete), resource (price alert), and key identifier (alert_id). It also tells the agent where the ID comes from (alert_list), which clearly distinguishes it from siblings like alert_disable, alert_enable, and alert_add. The purpose 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 the use case (permanently remove an alert) and even points to alert_list as the source of the ID. However, it does not explicitly contrast with alert_disable (which might be a non-destructive alternative) or state when not to use this tool. The guidance is adequate but leaves comparison to the agent's inference.
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 |
|---|---|---|---|
| _jq | No | ||
| alert_id | Yes | Alert indicator id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the key behavioral traits: readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds no behavioral detail beyond stating the disabling action itself, which is appropriate but not enriching enough to justify a higher score.
Agents need to know what a tool does to the 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 sentences contain the core action and a concrete lookup direction with no redundant wording. The description is small and front-loaded, serving its 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 is simple, requires only one parameter, and its annotations cover idempotency and mutability. The description is adequate for invocation; the only notable omission is guidance on choosing between similarly named alert operations, but that gap is minor for the agent to successfully call 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?
The schema only describes alert_id as 'Alert indicator id', while the description adds the valuable detail that the alert_id is numeric and can be obtained via alert_list. This helps the agent construct a correct call, though the optional _jq parameter remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain 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 the specific action ('Disable') and the resource ('a price alert') and identifies the key parameter by name. It does not explicitly differentiate this from sibling tools like alert_delete and alert_enable, but the verb 'disable' is semantically clear enough for basic selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 practical guidance by telling the agent to use alert_list to discover the numeric alert_id. However, it does not explain when to choose this tool over alert_delete or alert_enable, so usage context among the alert siblings is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_enableEnable Price AlertBIdempotentInspect
Enable a price alert by alert_id. Use alert_list to find the numeric alert_id.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| alert_id | Yes | Alert indicator id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds no additional behavioral context, such as what happens if the alert is already enabled, whether it requires specific permissions, or what the response contains. It simply restates the action, so it adds little 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 two short sentences with no wasted words. The primary action is stated first, and the helpful hint about alert_list follows. It is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 enable operation with one required parameter, the description provides the essential information: the action and how to get the ID. However, it does not describe the return value or error conditions, which might be useful since there is no output schema. The idempotency is covered by annotations, so it is reasonably complete but could benefit from a note about the expected result.
Complex tools with many parameters or behaviors need more documentation. 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 clarifies that alert_id is numeric and can be obtained via alert_list, which adds meaning beyond the schema's 'Alert indicator id'. However, the _jq parameter (the other parameter) is not mentioned at all, and with 50% schema coverage, the description does not fully compensate for the undocumented _jq parameter. It helps for alert_id but leaves _jq unexplained.
Input schemas describe structure but not intent. Descriptions should explain 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 a price alert by alert_id.' It identifies the resource (price alert) and the required identifier. It also points to alert_list for finding the ID, which helps differentiate from the list tool. However, it does not explicitly contrast with alert_disable or alert_add, so it doesn't fully distinguish among sibling alert 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 like alert_disable or alert_add. It only says to use alert_list to find the ID, which is about obtaining the parameter, not about choosing this tool. There is no statement about enabling being appropriate for existing alerts or that it should not be used for creating alerts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alert_listList Price AlertsBRead-onlyIdempotentInspect
Get all configured price alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false) already define the safety profile. The description adds minimal behavioral nuance ('configured', 'all'), but says nothing about pagination, completeness limits, or response format. It does not contradict annotations, and the annotation-provided context justifies a baseline score.
Agents need to know what a tool does to the 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 compact single sentence that focuses on the core action and object. There is no filler or redundancy, and the key information appears up front. It is appropriately brief for a tool whose burden falls only on the brief statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an undocumented parameter and no output schema, the description is insufficiently complete. An agent cannot determine whether `_jq` must be supplied or what return shape to expect, and no usage fallback is given. The description leaves the most delicate semantic gaps open.
Complex tools with many parameters or behaviors need more documentation. 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 `_jq` has a schema description coverage of 0%, and the description does not hint at its meaning or effect. The agent is left entirely uninformed about whether this parameter is required, optional, or what values control behavior. There is no effort to compensate for the missing schema 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 uses a specific verb ('Get') and a specific resource ('all configured price alerts'), and clearly distinguishes this tool from the alert mutation siblings (alert_add, alert_delete, alert_disable, alert_enable). The intent is immediately understandable 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 gives no guidance on when to choose this tool over alternatives, nor does it mention prerequisites such as having alerts configured. It is a bare imperative statement, leaving the agent to infer usage from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anomalyMarket AnomalyBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds context about what constitutes an anomaly and clarifies the count pagination, but it does not disclose additional behavioral traits like response format or rate limits. With strong annotations, this is adequate.
Agents need to know what a tool does to the 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 purpose and then lists parameters concisely, making it 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 simple read-only tool with rich annotations and a small parameter set, the description covers the essential information: purpose, parameters, and pagination. It omits the meaning of _jq and return format, but given the tool's simplicity and annotations, these are minor 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 75% (three of four parameters have descriptions). The description repeats the market codes, symbol example, and count defaults, adding little beyond the schema. The _jq parameter lacks any description in both schema and tool description, leaving a gap, but the overall parameter guidance is acceptable.
Input schemas describe structure but not intent. Descriptions should explain 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 fetches market anomaly alerts and defines them as unusual price/volume changes. It specifies the resource and verb, making the purpose clear. It does not explicitly differentiate from sibling tools like alert_list or signals, but the description's specificity is sufficient for basic understanding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 exclusions or prerequisites. It only explains parameters, leaving the agent to infer when anomaly alerts are appropriate relative to other alert and signal tools.
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 |
|---|---|---|---|
| _jq | 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, which informs the agent that this is a safe read operation. The description adds the detail that the returned data includes masked account numbers and status, which is useful. However, it does not disclose potential limitations such as only returning cards for the current account (implying no filtering), which is a minor gap but the description already states 'linked... for the current account'.
Agents need to know what a tool does to the 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 and information-dense. It front-loads the action and resource, and includes the exact output shape. There is zero wasted words; 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 read-only tool with one optional parameterasi and a clear output structure described, the description is essentially complete. It lacks explicit response limitations (e.g., pagination) but given the tool's simplicity and the presence of annotations, the description provides enough context for an agent to call it correctly. The output schema is not provided, but the description compensates by listing the fields.
Complex tools with many parameters or behaviors need more documentation. 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 only one parameter '_jq' with no description, and schema description coverage is 0%. The description does not explain the '_jq' parameter. However, since the parameter is optional (0 required) and likely a jq filter for output transformation, the schema itself is sparse电能; the description's lack of detail on '_jq' is not a major issue because it is optional and the core behavior is clear. The description provides a clear output 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?
The description clearly states the tool's purpose: listing linked withdrawal bank cards for the current account FAQs. It specifies the resource (bank cards) and the verb (list). Although it does not explicitly differentiate from sibling tools like 'withdrawals', the resource is distinct enough that an agent can infer it is the appropriate tool for accessing card 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 implies usage context: it lists linked cards for the current account, which is clear for the primary use case. However, it does not provide explicit guidance on when to use this tool over siblings like 'withdrawals' (which likely handles withdrawal records) or 'deposits'. There are no exclusions or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broker_holdingBroker HoldingBRead-onlyIdempotentInspect
Get top broker holding data for a symbol (HK stocks only; sourced from HKEX CCASS participant disclosure).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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" |
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 the data source (HKEX CCASS) and market restriction, which is useful but does not disclose return format or pagination. Given annotations carry the safety burden, the description adds some value beyond them, 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 a single, front-loaded sentence that conveys the core purpose, market scope, and data source with zero waste. It is concise, though it omits any usage guidance or parameter hints that might be expected for a tool with siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three parameters and no output schema, the description covers the purpose and scope. However, given the presence of sibling tools (broker_holding_daily, broker_holding_detail, brokers) that overlap in domain, the description does not help an agent decide which one to call. This is a notable gap in 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 description coverage is 67% (symbol and period have descriptions, _jq does not). The description does not elaborate on any parameters, nor does it compensate for the undocumented _jq field. It adds no parameter-level meaning beyond what the schema already provides, so the score is below the baseline for full 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 states a clear verb ('Get') and resource ('top broker holding data for a symbol'), plus a market scope ('HK stocks only') and data source. It does not explicitly differentiate from siblings like broker_holding_daily or broker_holding_detail, but the core purpose 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 mentions that it applies only to HK stocks and is sourced from HKEX CCASS, which gives some context, but it does not state when to use this tool versus the sibling broker_holding_daily, broker_holding_detail, or brokers. There are no explicit alternatives or when-not conditions.
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)BRead-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 |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" | |
| broker_id | Yes | Broker participant number |
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 this is safely a read operation. The description adds the data source (HKEX CCASS) and coverage (daily history, HK stocks), which is useful. However, it does not disclose any potential rate limits or pagination behavior, which might matter for historical queries.
Agents need to know what a tool does to the 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, information-dense sentence: it states the verb (get), the resource (daily holding history), the key parameters (broker_id and symbol), and the scope (HK stocks, HKEX CCASS). No filler 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 covers the basic purpose and source, but given that there is no output schema, it does not describe return fields or data quality. It also doesn't clarify the relationship to sibling tools like 'broker_holding' or 'broker_holding_detail', which is a moderate gap 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?
The schema describes both required parameters with good detail: 'symbol' explains format (e.g., '700.HK') and 'broker_id' as 'Broker participant number'. With 67% schema coverage, the description adds minimal extra parameter context. The optional '_jq' parameter remains undocumented in both schema and description, but being optional and likely a filter, the baseline 3 is reasonable.
Input schemas describe structure but not intent. Descriptions should explain 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 holding history for a broker in a symbol, with a specific scope (HK stocks, HKEX CCASS source). It is distinguishable from sibling tools like 'broker_holding' (likely current holdings) and 'broker_holding_detail' (likely more granular), though it doesn't explicitly differentiate from 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 when to use it (historical daily data for brokers) but does not explicitly state when not to use it or which alternatives are better (e.g., 'broker_holding' for current holdings, 'broker_holding_detail' for detailed changes). An agent would need to infer the differentiation from sibling names.
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 DetailARead-onlyIdempotentInspect
Get full broker holding detail list for a symbol (HK stocks only; sourced from HKEX CCASS participant disclosure).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, covering safety. The description adds value by specifying the market restriction (HK stocks only) and the data source (HKEX CCASS), which are behavioral constraints not captured in the annotations. However, it does not describe pagination or the structure of the returned list, though this is partially mitigated by the strong 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, front-loaded sentence that immediately states the tool's action and scope. It contains no filler and every word adds information (full list, symbol, HK only, source). This is an exemplar of concise, structured writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 two parameters, no output schema, and rich annotations, the description is adequate but not complete. It covers the core purpose and market scope, but does not explain what 'full broker holding detail list' includes, nor does it document the '_jq' parameter or any prerequisites beyond HK stocks. For a detail-list tool, an agent might need more context on return fields, but the absence of an output schema shifts that burden to the description, which does not fully meet 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 50% (only 'symbol' is documented). The description mentions 'for a symbol' but does not elaborate on the meaning or format beyond what the schema already provides. The '_jq' parameter is entirely undocumented in both schema and description, leaving an agent without guidance on its purpose or usage. The description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain 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 ('full broker holding detail list'), and the scope ('for a symbol' with 'HK stocks only'). It also specifies the data source (HKEX CCASS participant disclosure), which differentiates it from sibling tools like broker_holding or broker_holding_daily. This is a precise and specific statement of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context (HK stocks only, data source) but does not explicitly guide when to use this tool versus alternatives such as broker_holding or broker_holding_daily. There is no mention of exclusions or conditions that would route an agent to a sibling, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brokersBroker QueueARead-onlyIdempotentInspect
Get broker queue (HK stocks only). Map broker IDs to names via participants.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=true and idempotentHint=true, so the description only adds scoping ('HK stocks only') and a data dependency ('Map broker IDs to names via participants'). These add some behavioral context, but the description does not disclose response format, pagination, or any limitations beyond the scope note.
Agents need to know what a tool does to the 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 sentences, action first, with no filler or redundant details. The key scope restriction is front-loaded and the participants hint is included 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 its simplicity and the annotations provided, the description is adequate for understanding what it does, but it leaves the output shape unexplained and assumes the agent knows which 'participants' tool or resource to use. Without an output schema, this is a noticeable 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 50%; symbol has a description with an example, but _jq has none. The description indirectly constrains symbol to HK stocks, which adds some meaning, but it provides no information about the _jq parameter and does not compensate for the missing schema 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 states a specific verb and resource ('Get broker queue'), adds an explicit scope restriction ('HK stocks only'), and references a companion step ('Map broker IDs to names via participants') that distinguishes it from sibling tools like broker_holding or broker_holding_detail. An agent can immediately understand what this tool does and how it fits into a workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a context clue ('HK stocks only') but does not explicitly say when to use this tool versus alternatives, nor does it name any sibling tools as superior for other cases. The 'map via participants' hint implies a workflow, but there is no explicit when-to-use/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.
business_segmentsBusiness SegmentsARead-onlyIdempotentInspect
Get current-period business segment revenue breakdown for a symbol (name, percent, total, currency)
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, covering the operation's safety profile. The description adds useful context by enumerating the returned fields and the 'current-period' temporal scope, but does not disclose behaviors such as period definition, data availability, or input format normalization.
Agents need to know what a tool does to the 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 sentence, front-loaded with the primary action and scope, and every word contributes. It is appropriately compact for a simple read-only query tool with no nested objects or output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 strong annotations and only one required, documented parameter (symbol), the description supplies the essential output fields and the current-period scope. It could further clarify what 'current-period' means or describe _jq, but the tool's simplicity makes this level of detail 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 only 50%; symbol is documented with an example, but _jq has no description. The tool description only restates 'for a symbol' and does not explain _jq or add any format/validation details beyond the schema. It fails to compensate for the missing parameter 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 uses a specific verb 'Get' with a clear resource: 'business segment revenue breakdown'. It also states the scope ('current-period', 'for a symbol') and lists the key output fields (name, percent, total, currency). The 'current-period' qualifier distinguishes it from the sibling business_segments_history without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'current-period' qualifier gives clear context that this tool is for present-period data, implying that historical data should be retrieved elsewhere (e.g., business_segments_history). However, it does not explicitly name that alternative or state when not to use the tool, stopping short of full routing guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| cate | No | Segment category filter | |
| report | No | Report period: "qf" (quarterly), "saf" (semi-annual), "af" (annual) | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as read-only, idempotent, and non-destructive. The description adds only the idea of 'revenue trends by period and category' but does not explain output shape, pagination, or any other behavioral details that the annotations do not 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 that leads with the action and resource, then adds the key dimensions. No filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations covering side effects and the schema covering required parameters. However, the description omits any mention of return shape or how results are organized (e.g., chronological order, units), and does not clarify edge cases like missing segment data. It is adequate but thin.
Complex tools with many parameters or behaviors need more documentation. 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 3 of 4 parameters with descriptions, and the tool description's mention of 'period' and 'category' lightly reinforces the `report` and `cate` parameters. However, it does not add meaningful meaning beyond the schema, and `_jq` remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain 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 a clear resource ('historical business segment revenue trends'), and the parenthetical ('by period and category') adds useful dimensions. It does not explicitly contrast with the sibling tool `business_segments`, but the word 'historical' and 'trends' provide a reasonable distinction from the likely current-snapshot 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?
The description implies this is for historical trend retrieval, but it does not explicitly state when to choose this over `business_segments` or other alternatives. There is no 'when to use' or 'when not to use' guidance beyond the implied historical focus.
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. When Greek indexes (Delta, Gamma, Theta, Vega, Rho) are requested, they are normalized: theta is the per-day value (one day's time decay), vega is the price change per 1% change in implied volatility, and rho is the price change per 1% change in the risk-free interest rate.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavior beyond that: the full default index list and the precise normalization semantics for Greek indexes (theta per-day, vega per 1% IV, rho per 1% rate). 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 moderately long but every sentence serves a purpose: purpose, parameters, defaults, output, and Greek normalization. The default list repeats schema content but functions as a convenient reference; there is no unnecessary 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?
For a read-only calculation tool, it adequately covers required inputs, optional inputs with defaults, output shape, and special behavior for Greek indexes. Since there is no output schema, the statement 'Returns per-symbol index values' gives sufficient but not exhaustive return-value 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?
The schema already describes symbols and indexes, but the description enriches the indexes parameter with concrete examples, the default set when omitted/empty, and special interpretation for Greek indexes. It leaves _jq undocumented, but schema coverage is still 67% and the description adds meaningful guidance 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 opens with a specific verb and resource: 'Calculate financial indexes for symbols,' and later clarifies it returns per-symbol index values. This distinguishes it from many siblings, though it does not explicitly name an alternative 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?
The description explains how to invoke the tool: pass symbols, optionally indexes, and what happens when indexes is omitted or empty. However, it does not explicitly state when to prefer this tool over siblings like quote or now, nor does it mention any exclusions.
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. Set is_attached=true to cancel a single take-profit/stop-loss leg by its own order_id; cancelling a parent order cancels its legs along with it.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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) | |
| is_attached | No | Set to true to cancel an attached take-profit / stop-loss leg by its own order_id, leaving the parent order in place. Omit (or false) to cancel a parent order, which cancels its attached legs with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral trait that annotations do not fully capture: the tool is a dry run unless a confirmation code is passed. It explains the generated code is order-specific, single-use, expires in 10 minutes, and that changing any field invalidates it. The destructiveHint is true, but the description goes beyond by specifying the exact safety protocol, which is essential for safe invocation.
Agents need to know what a tool does to the 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 dense but well-structured, front-loading the core action and then the critical confirmation requirement. It is longer than ideal, but every sentence serves a purpose (e.g., dry-run mechanics, code properties, leg cancellation). The structure is logical: action, success response, confirmation protocol, special case, and safety rules.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schemaторit, the description adequately explains the return value ('plain text order cancelled') and error conditions. It fully covers the tool's behavior, including the dry-run preview echo and the distinction between parent and attached-leg cancellation. An agent has all information needed to call the tool correctly without external 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 already has high coverage (75%) with detailed parameter descriptions, including the purpose of 'execute' and 'is_attached'. The description adds value by explicitly tying the confirmation code to the dry-run flow in prose form)Skip, reinforcing the two-step protocol beyond the schema's parameter-level explanation. It clarifies the parent-leg behavior that is partially in the schema but reiterated for emphasis.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb ('Cancel') and resource ('an open order by order_id'), and immediately distinguishes two use cases: cancelling a parent order versus an attached leg. This differentiates it from siblings like 'replace_order' and 'grid_cancel' and tells the agent exactly what it acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states the mandatory two-step confirmation protocol: first call without execute to get a preview, show it to the user, then call again with the confirmation code after explicit approval. It also names the alternative for cancelling a single leg (is_attached=true) and clarifies that cancelling a parent also cancels legs, which addresses common ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
candlesticksCandlesticksARead-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. If the account's entitlement caps out below the requested count, this returns as many candles as allowed instead of erroring — check the returned array length against count if an exact number matters.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds a meaningful behavioral detail: when the entitlement caps out, the tool returns as many candles as allowed instead of erroring, and it advises checking the array length. This goes beyond what annotations convey and is valuable 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?
The description is concise and front-loaded with the core purpose. It lists defaults and edge-case behavior in a structured manner without unnecessary fluff. Every sentence provides useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 6 parameters and no output schema, the description covers the defaults, allowed values, and an important edge case. However, it omits the _jq parameter entirely and does not describe the response structure beyond 'candlestick data (OHLCV)', which is vague. Given that there is no output schema, 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 description coverage is high (83%), so the schema already documents all parameters except _jq. The description repeats defaults and enum-like values that are also in the schema, but it does add the clarification that only symbol is required and explains the entitlement behavior. However, it does not explain _jq, which is undocumented in both schema and description. Overall, the description adds little 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 'candlestick data (OHLCV)', making the purpose specific and unambiguous. It also lists the default values and required field, but it does not explicitly differentiate from sibling tools like history_candlesticks_by_date or history_candlesticks_by_offset, which likely serve a different purpose (historical vs. periodic).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this is for recent/periodic data, nor does it point to sibling tools for historical queries. The only usage hint is the behavior when the entitlement caps out, but that is not a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capital_distributionCapital DistributionARead-onlyIdempotentInspect
Get capital distribution for a symbol. data_available is false for symbols with no capital-flow data (e.g. indices) — the other fields are still present but meaningless zeros in that case.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses a non-obvious edge case: symbols like indices produce data_available=false while other fields remain present but as meaningless zeros. This directly prevents an agent from misinterpreting zeros as real data, which is substantial added behavioral 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 sentences: the first states the action and object, the second delivers the critical caveat. No filler or repetition of schema content; the structure is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only symbol lookup with one required parameter, the description covers the key gotcha (missing data yields data_available=false with meaningless zeros). However, it doesn't enumerate the returned capital distribution fields, so an agent must infer the payload structure beyond the single flag. Given no output schema, this leaves minor uncertainty about the response shape.
Complex tools with many parameters or behaviors need more documentation. 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 already documents symbol and its format. The description reiterates 'for a symbol' but adds no parameter-specific semantics for the undocumented _jq parameter axes. With 50% schema coverage, this lack of additional explanation leaves _jq ambiguous.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb 'Get' with the object 'capital distribution for a symbol', making the tool's purpose immediately understandable. It doesn't explicitly contrast against sibling tools like capital_flow, but the scope ('for a symbol') is specific enough that a caller can infer what this endpoint returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to choose this tool over siblings. It only explains a data-availability edge case (data_available false for indices). Without explicit routing to alternatives such as capital_flow, an agent gets limited conditional context but no decision framework.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capital_flowCapital FlowBRead-onlyIdempotentInspect
Get capital inflow/outflow time series. Returns items[]{timestamp, inflow, outflow, net_flow} for the symbol (same-day data).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 readOnly/idempotent/openWorld. The description adds a meaningful behavioral caveat ('same-day data') and specifies the item shape (timestamp, inflow, outflow, net_flow), which helps set expectations 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?
A single sentence that front-loads the core action and return shape with zero 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?
Returns fields and same-day caveat are stated, and the read-only profile is already covered by annotations. It is slightly light on how the time series is bounded (default range, intraday vs. historical daily), but for a simple read tool this is nearly 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 ~50% since symbol is documented but _jq is not. The description only restates 'for the symbol' and does not clarify the _jq filtering parameter. At this coverage level, the description needed to compensate but largely repeats what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Get capital flow time series' and lists the exact return fields (items[]{timestamp, inflow, outflow, net_flow}), making the tool's purpose clear. However, it does not differentiate itself from the sibling 'cash_flow' tool, which could plausibly be confused with it despite being a different concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. Given the large sibling set including cash_flow and capital_distribution, the description provides no exclusions or routing hints that would help an agent choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cash_flowCash FlowBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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?
Read-only and non-destructive behavior is already covered by annotations. The description adds useful behavior context by listing the returned items[] fields and the RFC3339 date format, but does not disclose pagination, result limits, or response envelope details.
Agents need to know what a tool does to the 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 tight sentences deliver purpose, allowed record types, return shape, and date format 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?
The description provides the return fields and date format, which is valuable given there is no output schema. Still, it omits context an agent may need such as pagination, maximum date range, ordering, and why an agent should choose this instead of the sibling deposit/withdrawal/dividend 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?
The schema documents start_at and end_at, and the description reinforces the RFC3339 format. However, the _jq parameter is left undocumented, and no parameter relationships, constraints, or defaults are explained. With 67% schema coverage, the description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get cash flow records') and enumerates the record types (deposits, withdrawals, dividends). This is clear about what the tool does, but it does not differentiate itself from sibling tools like deposits, withdrawals, or dividend_detail, which may already cover those subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it is a unified view of deposits, withdrawals, and dividends, but never explicitly says when to choose cash_flow over the dedicated deposits/withdrawals/dividend sibling tools. No guidance on exclusions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
companyCompany ProfileBRead-onlyIdempotentInspect
Get company overview. US accounts querying a .US symbol get a US-specific variant (intro, market_cap, top_rank_tags, sharelist, detail_url). The region is detected from the account automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a useful behavioral disclosure beyond the read-only annotations: the region is auto-detected from the account, and US accounts get a variant with specific fields. It doesn't describe the non-US behavior, which is a minor gap.
Agents need to know what a tool does to the 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 filler. The core purpose is front-loaded, and the conditional variant is explained 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?
For a read-only, low-complexity overview tool, the description is mostly complete: it covers the main purpose and an important conditional behavior. The lack of an output schema and any detail on non-US responses is a minor gap, but not critical 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?
The description does not mention parameters at all. The symbol parameter is covered by the schema with an example, but the optional _jq parameter remains undocumented in both schema and description, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain 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 clear action ('Get company overview') and resource, with a specific verb. It does not explicitly name or contrast sibling tools like static_info or security_facts, so the differentiation is left to the agent's inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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. The only conditional context is the US-specific variant, which is a behavioral detail rather than a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consensusAnalyst ConsensusBRead-onlyIdempotentInspect
Get financial consensus estimates for upcoming periods. US accounts querying a .US symbol get a US-specific variant (ai_summary plus a details[] list per period, instead of items[]). The region is detected from the account automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, idempotent, non-destructive behavior. The description adds meaningful runtime behavior: US accounts querying .US symbols receive a different response shape (ai_summary plus details[] instead of items[]). This is useful 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 core purpose. The regional variant is stated immediately after the main behavior, and there is no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 essential context is present: what is returned, the regional variant, and automatic account-based region detection. Since there is no output schema, a bit more detail about the general response structure for non-US accounts would improve completeness, but the description covers the main agent decision points.
Complex tools with many parameters or behaviors need more documentation. 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 only 50% (symbol is described; _jq is not). The description does not add meaning for either parameter beyond what the schema already provides, so it fails to compensate for the undocumented _jq 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 consensus estimates for upcoming periods, with a specific verb and resource. It does not explicitly distinguish this from related tools like forecast_eps or institution_rating_history, but the regional variant detail adds useful specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 sibling alternatives such as forecast_eps, institution_rating_history, or finance_calendar. The only usage nuance is the US-account variant, which is a behavioral note rather than a selection guideline.
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 |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Index symbol, e.g. "HSI.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior, lowering the bar for the description. The description goes beyond that by detailing the response structure: for indices it returns constituents[] with specific fields, and for ETFs it returns info[] grouped by asset_type (1-4), including nested details like holding_detail and report_date. This gives the agent a precise understanding of what to expect without needing an 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 long but every sentence contributes meaningful detail. It front-loads the core purpose, then systematically explains the index case and the four ETF asset-type groups, including field names and nested structures. While it is more verbose than a minimal definition, the complexity of the output justifies the length, and it remains well-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?
With no output schema, the description carries the full responsibility for explaining return values. It does so thoroughly: it covers both index constituents (listing all fields) and ETF asset allocation (explaining the four groups, their fields, and nested objects). No critical information about the response is missing, making the tool callable correctly without additional schema guidance.
Complex tools with many parameters or behaviors need more documentation. 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 exactly 50%: the 'symbol' parameter has a description, but '_jq' does not. The tool description adds value for 'symbol' by providing concrete examples (HSI.HK, QQQ.US) and explaining how the symbol determines index vs ETF behavior. However, it does not address '_jq' at all, and the overall parameter documentation is not complete. Since coverage is borderline and the description partially compensates, a 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's purpose: 'Get the constituents of an index or the asset allocation of an ETF.' It provides specific examples (HSI.HK, .DJI.US for indices; QQQ.US, 2800.HK for ETFs) and explains the distinct outputs for each case. This unambiguously distinguishes it from any sibling that might handle similar data, such as fund_positions or etf_docs, 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 gives clear context for when to use the tool: whenever you need index constituents or ETF asset allocation. It does not explicitly list when not to use it or name alternative tools, but the usage context is well-defined through the index/ETF distinction. This meets the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
corp_actionCorporate ActionsBRead-onlyIdempotentInspect
Get corporate actions (splits, buybacks, name changes).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark the tool as read-only and open-world, so no side-effect warning is needed. The description is consistent with those annotations and provides basic examples. It does not disclose any additional behavior such as time range, pagination limits, or how current data is, but for a simple read-only lookup this is 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?
A single, direct sentence that front-loads the verb and resource. It wastes no tokens and the parenthetical examples add useful detail without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations and a simple schema, the description is close to adequate, but it omits when this is the right tool (vs dividend_detail/capital_distribution) and what the response format looks like. No output schema exists to fill that gap, so a bit more context would help.
Complex tools with many parameters or behaviors need more documentation. 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 does not explain how to use the parameters, and the schema only documents 'symbol' while '_jq' has no description. With 50% schema coveragethe description should compensate but does not mention either 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 verb 'Get' and the resource 'corporate actions' with concrete examples (splits, buybacks, name changes). This makes the primary purpose evident and distinguishes it from related tools like dividend_detail or cash_flow, though it doesn't explicitly contrast with those 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?
No guidance is provided about when to use this tool versus sibling tools such as dividend_detail, capital_distribution, or company. The description implies it covers various corporate actions but gives no use-case context, exclusions, or selection criteria.
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 |
|---|---|---|---|
| _jq | No | ||
| name | Yes | Group name | |
| securities | No | Securities to add, e.g. ["700.HK", "AAPL.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds that securities can optionally be passed to pre-populate the group. However, it does not disclose duplicate-name behavior, ownership requirements, or other side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences with no filler. It states the core action first and the optional behavior second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and the schema covers the main parameters, but with no output schema the description does not mention what the tool returns or how success/failure is signaled. It also omits behavior around duplicate group names or whether an empty group is created when securities are omitted.
Complex tools with many parameters or behaviors need more documentation. 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 'name' and 'securities' with descriptions and an example. The description reinforces the securities example and adds the 'pre-populate' intent, but the '_jq' parameter remains undocumented, and no additional semantic detail beyond the schema is 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 uses a specific verb ('Create') and resource ('watchlist group'), and clarifies the optional pre-population behavior with securities. This clearly distinguishes it from sibling tools like update_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?
The description makes the tool's purpose clear, but it does not explicitly state when to use this tool versus updating or deleting a watchlist group. The usage context is implied by the name and siblings rather than spelled out.
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 |
|---|---|---|---|
| _jq | No | ||
| symbols | Yes | Security symbols to check, e.g. ["AAPL.US", "TSLA.US"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so no side-effect warning is required. The description adds little behavioral detail beyond that, such as return format or handling of unsupported symbols, 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?
A single sentence carries the full purpose with no filler, and the key object (`symbols`) appears early. It is easy to parse and 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?
For a simple read-only check the description is close to adequate, but there is no output schema and no statement of what the tool returns, such as a boolean, per-symbol status, or filtered result. It also does not explain how unsupported or unknown symbols are reported, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. 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 documents `symbols` with an example, and the description only restates 'given symbols' without adding parameter-level detail. `_jq` is entirely undocumented in both the schema and the description, so the 50% coverage gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain 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 predicate operation: it checks whether given symbols support DCA recurring investment. This is plainly distinct from sibling DCA actions such as dca_create, dca_history, or dca_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?
No explicit when-to-use or when-not-to-use guidance is provided, and no alternative tool is named. The description implies its use as a preflight eligibility check, but it does not say to use it before dca_create or distinguish it from dca_list or dca_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_createCreate DCA PlanAInspect
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 |
|---|---|---|---|
| _jq | No | ||
| 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 supply readOnlyHint=false and idempotentHint=false, so 'Create' correctly signals mutation and non-idempotency. The description adds the recurring nature of the plan but does not mention consequences such as automatic later investments or duplicate-plan creation on repeated calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses front-load the verb and then map directly to frequency, day_of_week, and day_of_month with no filler. Slightly telegraphic, but every fragment carries useful parameter 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?
The description covers the core inputs and frequency values, but with no output schema it leaves the return shape unstated. It also does not explicitly explain conditional dependencies such as 'day_of_week applies only when frequency=Weekly' beyond a parenthetical, though the schema already conveys much of 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 86%, so the high-coverage baseline applies. The description largely restates schema fields ('Daily, Weekly, Monthly', 'Mon/Tue/Wed/Thu/Fri', '1-28') rather than adding new meaning such as conditional-required logic or interaction with allow_margin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') and resource ('DCA recurring investment plan'), immediately distinguishing it from management siblings like dca_update, dca_pause, and dca_stop. The scheduling parameters reinforce the tool's domain and 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 implies use when setting up a new DCA plan, but it never names alternatives or says when not to use this tool. With a large DCA family (dca_update/dca_stop/dca_resume), an explicit routing note would elevate this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_historyDCA Execution HistoryBRead-onlyIdempotentInspect
Get execution history records for a DCA plan by plan_id.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| page | No | Page number (default 1) | |
| limit | No | Records per page (default 20) | |
| plan_id | Yes | Plan ID |
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 that records are scoped by plan_id, which is useful. However, it doesn't disclose pagination behavior, ordering, or what fields the records contain. With annotations covering safety, 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 a single, efficient sentence that front-loads the action and resource. It's concise and to the point. It could add a bit more context about pagination or return format, but for its length it's well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations covering safety and schema covering most parameters, the description is adequate. However, there's no output schema, and the description doesn't mention what the execution history records contain, how they're ordered, or how pagination works. An agent could call it correctly with plan_id, but might not know what to expect in the response.
Complex tools with many parameters or behaviors need more documentation. 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 75%: plan_id, page, and limit have descriptions, while _jq has none. The description adds minimal value beyond the schema—it confirms plan_id is the key filter. The _jq parameter is undocumented in both schema and description, which is a gap, but the core parameters are already well-described 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 states a specific verb ('Get'), a resource ('execution history records'), and a scope ('for a DCA plan by plan_id'). It clearly identifies what the tool does. It doesn't explicitly distinguish from siblings like today_executions or history_executions, but the DCA plan scoping is a clear differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context: use this when you need execution history for a specific DCA plan. It doesn't explicitly state when not to use it or name alternatives like history_executions or today_executions. The context is clear enough for an agent to infer, but no explicit routing guidance is provided.
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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
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 fully covered. The description adds the filtering behavior (by status or symbol) and the fact that omitting filters returns all plans, which is useful. It does not disclose pagination behavior beyond the schema's page/limit defaults, but that is a minor gap given the annotations carry the main behavioral burden.
Agents need to know what a tool does to the 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, zero filler. The main action and resource are front-loaded, and the filter options are stated compactly. 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?
For a read-only list tool with no output schema, the description plus annotations cover the essential call context: what it lists, how to filter, and that it is safe/idempotent. Pagination defaults are in the schema. It could mention that the response is a paginated list, but the schema's page/limit parameters already imply that. Slightly more detail on return shape would push this to 5, but it is not necessary 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 80%, so the schema already documents most parameters. The description adds the meaning of the status filter (Active/Suspended/Finished) and the symbol filter example ('AAPL.US'), which slightly enriches the schema. The _jq parameter is undocumented in both schema and description, but at 80% coverage the description is not required to compensate fully. 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 states a specific verb ('List') and resource ('DCA recurring investment plans'), and immediately distinguishes itself from sibling tools like dca_history, dca_stats, dca_update, dca_create, dca_pause, dca_resume, dca_stop, and dca_check. It also names the two filter dimensions (status and symbol), which makes the tool's scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implies when to use this tool: when you need a list of DCA plans, optionally filtered by status or symbol. It does not explicitly name alternatives or exclusions, but the sibling set is large and the description's filter hints (status/symbol) plus the title 'List DCA Plans' make the use case clear. It could be improved by explicitly saying 'use dca_history for past executions' or similar, but the context is sufficient.
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 |
|---|---|---|---|
| _jq | No | ||
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavioral effect: the plan stops executing until resumed. It also mentions the return value ('Returns upstream API response'). The annotations already indicate readOnlyHint=false and idempotentHint=true, so the description adds context about reversibility and the specific effect on executions. It does not contradict the annotations and adds meaningful behavior beyond 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 two sentences with no filler. The primary action is front-loaded, and each sentence contributes either the purpose, the effect, or the pointer to the resume tool. It is minimal yet complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 state-change tool, the description covers the key points: what it does, the effect, and the path to undo (via resume). It does not discuss required parameters beyond plan_id or error handling, but given the schema and annotations are available, it is fairly complete. A mention of the difference from dca_stop or the _jq parameter would have made it more robust.
Complex tools with many parameters or behaviors need more documentation. 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 references plan_id as the identifier ('by plan_id') but does not explain the second parameter _jq, which is present in the schema and lacks a description (schema coverage is only 50%). The description adds value for plan_id by clarifying its role but fails to compensate for the undocumented _jq parameter. It would need to mention _jq or its purpose to be more helpful.
Input schemas describe structure but not intent. Descriptions should explain 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 clear action ('Pause (suspend)'), a specific resource ('a DCA plan'), and the mechanism ('by plan_id'). It also differentiates from the sibling tool by explicitly naming dca_resume as the restart counterpart. This leaves 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 tells the agent when to use this tool (to pause a plan) and points to an explicit alternative ('Use dca_resume to restart'). However, it does not mention the sibling dca_stop, which is a related but distinct operation. Since it names one clear alternative and implicitly contrasts pause with resume, it provides solid guidance, but a mention of dca_stop would have made it more complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_resumeResume DCA PlanBIdempotentInspect
Resume a suspended DCA plan by plan_id. Resumes automated execution on the configured schedule. Returns upstream API response.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: it states that execution resumes on the configured schedule and that the result is an upstream API response. It still withholds details like error cases or what happens when the plan is not already suspended, but the annotations already cover the basic mutation/idempotency 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?
The description is short and front-loaded: the first sentence gives the core action, and the second gives the behavioral outcome. No filler is present, though the third sentence about the upstream response is useful but slightly generic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 relatively simple one-required-input tool and the available annotations, the description provides adequate context on what it does and what is returned. It does not fully explain the undocumented `_jq` parameter, possible error conditions for non-suspended plans, or details about the upstream response structure, so the overall picture remains partially 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 mentions 'by plan_id' but this only repeats the schema, adding little meaning beyond the parameter name and type. Schema description coverage is only 50% because `_jq` has no description, and the tool description does not clarify the purpose or whether it should be provided, leaving a significant gap for agent 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 identifies the action ('resume'), the resource ('DCA plan'), and the key input ('plan_id'), which is enough to understand the tool's core purpose. It differentiates from obvious siblings by the resume/suspend relationship, but it does not explicitly name any sibling it is distinct from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Resume a suspended DCA plan' implies the appropriate condition for use, and 'resumes automated execution on the configured schedule' clarifies the expected effect. However, there is no explicit guidance about when not to use this tool or which sibling alternatives (e.g., dca_pause, dca_stop, dca_update) should be selected instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dca_statsDCA StatisticsBRead-onlyIdempotentInspect
Get DCA investment statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | No | Filter by symbol, e.g. "AAPL.US". Omit to return stats for all plans. |
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 structurally. The description adds no behavioral context beyond the word 'Get', but it does not contradict the annotations. Since the annotations carry the behavioral burden, this is minimally 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 front-loaded sentence with zero filler. Every word contributes to identifying the operation, and it is appropriately sized for such a simple tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should compensate by explaining what statistics are included, how symbol filtering behaves, and how this differs from related DCA tools. The description provides none of this, leaving an agent to infer the response shape and appropriate usage from the name alone.
Complex tools with many parameters or behaviors need more documentation. 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 only 50%, with the symbol parameter documented and _jq completely undocumented. The description does not compensate by explaining either parameter or the meaning of the returned statistics. An agent must guess what '_jq' is for and what statistical measures 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 states a clear verb and resource: 'Get DCA investment statistics.' It is unambiguous about what the tool does, though it does not explicitly differentiate itself from sibling tools like dca_history, trade_stats, or dca_list. The 'DCA' qualifier narrows it enough for basic identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool versus siblings such as dca_history, dca_list, or trade_stats. It does not state when it should be preferred, what it returns that others do not, or any exclusions. Given the large sibling set, this is a clear gap.
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 |
|---|---|---|---|
| _jq | No | ||
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds crucial context beyond the annotations: 'This cannot be undone' and 'Returns upstream API response.' The irreversibility warning is a meaningful behavioral disclosure that the annotations alone don't fully convey. The description doesn't contradict the annotations. It could go further by noting whether the action requires special permissions or what happens to associated orders, but the irreversibility warning is strong. A 4 is appropriate because it adds value beyond annotations without fully describing all behavioral consequences.
Agents need to know what a tool does to the 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 sentences, each earning its place: the action and irreversibility, the alternative tool, and the return behavior. The most important information (permanent, irreversible) is 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?
For a single-required-parameter mutation tool with no output schema, the description covers the essential context: what it does, that it's irreversible, the alternative for pausing, and what it returns. The annotations cover idempotency and destructiveness. The only minor gap is that it doesn't describe error conditions or side effects on related resources (e.g., pending orders), but given the tool's simplicity, this is adequate. A 4 is appropriate.
Complex tools with many parameters or behaviors need more documentation. 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 50%: plan_id has a description ('Plan ID') but _jq has none. The description mentions 'by plan_id', which reinforces the key parameter's role. However, the description doesn't explain what _jq is for or how to format plan_id. With 50% coverage, the description partially compensates but doesn't fully close the gap. Baseline 3 is fair since the main parameter is documented in the schema and the description confirms its role.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Permanently stop'), a specific resource ('DCA plan'), and the key identifier ('by plan_id'). It also explicitly distinguishes itself from the sibling dca_pause, which is critical given the large sibling list. This is a clear, unambiguous purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use this tool ('Permanently stop') and when not to ('To temporarily pause, use dca_pause instead'). It names the alternative tool directly, giving the agent a clear decision rule. This is exactly the kind of usage guidance that helps an agent select between siblings.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 readOnlyHint=false and destructiveHint=true mirroring the mutation intent; the description adds the return value ('Returns updated plan') but doesn't disclose any side effects, idempotency, or partial-update semantics. With no annotation contradiction ****and some description of the return, 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 a single dense sentence that front-loads the main action ('Update an existing DCA plan by plan_id') and then lists modifiable fields. It avoids redundancy with the schema. However, it could be slightly more scannable with bullets or a second sentence for exclusions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations indicate readOnlyHint=false, idempotent=false, and destructiveHint=true, signaling a mutating endpoint with side effectsikuha—but the description doesn't warn about consequences (e.g., whether changing frequency resets the schedule, whether old values are irreversibly replaced, or whether margin changes trigger a re-evaluation). No output schema exists to describe the response. For a mutation tool, 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 high (86%), with parameter descriptions already present. The description adds meaning by explaining the update semantics, e.g., day_of_month applies only to Monthly frequency per the 1-28 range, and frequency choices are explicit. This fills the small parametric gap (e.g., _jq) and reinforces 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?
The description states a clear verb ('Update') and resource ('DCA plan'), and explicitly lists the mutable fields (amount, frequency, day_of_week, day_of_month). This distinguishes it from sibling tools like dca_history and dca_pause, and the update intent 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?
No guidance is provided on when to use this tool instead of other DCA tools (e.g., dca_create, dca_pause, dca_stop). There is no mention of prerequisites, whether plans are in active status, or whether syncing is needed. The description covers what but not when or why.
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 | |
| _jq | No | ||
| purge | Yes | Whether to also remove the securities from other groups |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructive behavior and non-read-only status; the description adds specific context by explaining the purge side effect: removing securities from all other groups. This goes beyond the generic destructiveHint and gives the agent a clearer picture of consequences.
Agents need to know what a tool does to the 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 action ('Delete a watchlist group by id') before adding the conditional purge detail. Every word earns its place, with no 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?
For a simple delete operation with annotations and schema covering the required parameters, the description is nearly complete. It covers the key destructive nuance (purge behavior) and required inputs, though it omits details about return values/errors and the _jq parameter.
Complex tools with many parameters or behaviors need more documentation. 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 id and purge, and the description reinforces id as numeric and clarifies purge behavior. However, it does not explain the undocumented _jq parameter, and only 67% of parameters have schema descriptions, leaving a gap the description does not fill.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Delete a watchlist group') and the targeted resource, plus the key parameter semantics ('by id (numeric)'). It is specific enough to differentiate from generic tools, though it does not explicitly distinguish itself from create_watchlist_group or update_watchlist_group, 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?
No guidance is provided about when to use this tool versus alternatives, and there are no exclusion conditions or mention of prerequisites. The only conditional instruction ('Set purge=true...') describes an option within the tool, not when to choose this tool over siblings.
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 |
|---|---|---|---|
| _jq | No | ||
| 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?
The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description adds value by disclosing the exact return shape (items[]{id, amount, currency, status, created_at, updated_at}) and filter semantics (states and currencies). No contradiction with annotations 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?
Three short, information-dense sentences: purpose, return shape, and filter hints. The purpose is front-loaded, and every sentence adds value without repetition 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?
For a read-only list endpoint with no output schema and five optional parameters, the description covers the essential invocation details: action, account scope, return fields, and filter values. It does not describe pagination behavior or sort order, but the schema already documents page and size defaults, so 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 schema already describes page, size, states, and currencies, so baseline is 3. The description adds meaningful detail beyond the schema by enumerating the allowed state values (Pending/Finished/Failed) and confirming the comma-separated format for both filters. It does not cover _jq, but that is an unclear power-user parameter not essential to basic invocation.
Input schemas describe structure but not intent. Descriptions should explain 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 deposit history for the current account.' This clearly distinguishes the tool from siblings like account_balance, withdrawals, and bank_cards, and the added return-field list makes its scope 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 the tool—when deposit history is needed for the current account—but it does not explicitly contrast it with alternatives such as withdrawals or account_balance. There is clear context and filter guidance, but no explicit when-not-to-use or sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
depthOrder Book DepthBRead-onlyIdempotentInspect
Get order book depth for a symbol. Up to 10 price levels.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the 'up to 10 price levels' limit, which is useful behavioral context beyond annotations. However, it doesn't mention return format (e.g., bids/asks structure) or any rate limiting, so it's 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, short sentence that gets to the point quickly. It front-loads the core functionality and adds the level limit. No wasted words, but it could be slightly more detailed without much bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with no output schema. The description covers the essential purpose and a key limit, but doesn't explain the response structure (bids/asks) or the '_jq' parameter. For a simple market data tool with safe annotations, it's reasonably complete, but missing the parameter explanation is 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?
The schema covers the 'symbol' parameter well (with example '700.HK'), but the '_jq' parameter has no description in the schema (coverage 50%). The description doesn't mention '_jq' at all, leaving it undocumented. Since the description fails to explain the one undocumented parameter, it doesn't fully compensate, but the symbol is well-covered, so it's slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('order book depth'), and it mentions a key constraint ('Up to 10 price levels'). It is clear what the tool does, though it doesn't explicitly differentiate it from sibling tools like 'quote' or 'intraday', but the purpose is unambiguous given the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool versus alternatives. It doesn't mention context (e.g., for market analysis) or any exclusions (e.g., not for historical data). Without sibling differentiation, an agent might confuse it with quote or candlesticks, as the description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dividendDividendBRead-onlyIdempotentInspect
Get dividend history for the symbol. US accounts querying a .US symbol get a US-specific variant (e.g. dividend_yield_ttm is a percent value: 0.34 means 0.34%). The region is detected from the account automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral detail beyond the annotations: it discloses that US accounts querying .US symbols get a US-specific variant and explains the percent-value convention (0.34 = 0.34%). While annotations already declare readOnly, idempotent, and non-destructive, this description enriches behavior and 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 two purposeful sentences. The first sentence clearly states the core action, and the second adds an important regional variant. There is zero fluff or redundancy; the message is front-loaded with the primary 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 is sufficient to invoke the tool correctly in terms of the required 'symbol' parameter, but it leaves gaps: it doesn't explain what the returned dividend history contains, doesn't touch upon the undocumented '_jq' parameter, and doesn't clarify how 'dividend' differs from 'dividend_detail'. Given no output schema, more context about return data would have been valuable.
Complex tools with many parameters or behaviors need more documentation. 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 description already covers 'symbol' with an example, and the description does not add any new meaning to that parameter. The _jq parameter is undocumented in the schema, and the description also fails to explain it. With 50% schema coverage, the description does little to compensate for the missing parameter 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 states a clear verb and resource: 'Get dividend history for the symbol.' This distinguishes it from a generic 'process' tool and makes its purpose obvious. However, it does not explicitly differentiate itself from the sibling tool 'dividend_detail', so it loses one point against the sibling-differentiation criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 over alternatives like 'dividend_detail'. There is no mention of exclusions, prerequisites, or alternative tools. The only context is the US/US-symbol variant, which is not a usage-direction clue, so the guidance is essentially absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dividend_detailDividend DetailCRead-onlyIdempotentInspect
Get detailed dividend distribution scheme.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 add behavioral context beyond them. It offers no information about response shape, pagination, or operational behavior, although 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, direct sentence with no filler or redundant restatement. It is front-loaded and every word contributes to identifying the operation, even if the overall definition is sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 should clarify what 'detailed dividend distribution scheme' includes and how it differs from the sibling `dividend` tool. It provides only a vague noun phrase, leaving the agent without enough information to anticipate the response or choose confidently between related 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 coverage is only 50%: `symbol` is described but `_jq` is not. The description does not explain either parameter or how the dividend detail is keyed, so an agent cannot fully infer the meaning of `_jq`.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Get') and resource ('detailed dividend distribution scheme'), making it clear this is a read operation for dividend details. It reasonably distinguishes from the sibling `dividend` tool by emphasizing 'detailed', though it does not specify what the scheme contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 sibling tools like `dividend`, nor any context about prerequisites or selection criteria. The description only implies utility through its purpose, leaving alternatives undocumented.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds no further behavioral context (e.g., that this does not place an order, or that it uses current account balances). It focuses on parameter defaults rather than disclosing non-obvious behavior, but given the annotations, it 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 a single, well-structured sentence that immediately states the purpose and then lists the default behaviors in a compact, readable way. There is no redundancy or filler; every clause contributes to understanding the tool's usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool is simple and the annotations cover safety, the description does not specify what the return value represents (e.g., a numeric quantity, an error structure) or any prerequisites like market data availability. Given there is no output schema, a brief explanation of the expected result would improve completeness, but the core purpose is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. 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 80%, with clear descriptions for side, price, order_type, and symbol. The description essentially restates what the schema already says (only symbol required, defaults for side and order_type, price optional). It adds no new parameter semantics that aren't already present 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 a specific action ('Estimate maximum buy/sell quantity') and a specific resource ('for a symbol'). It distinguishes itself from siblings by focusing on estimation rather than order placement or other operations. It also conveys the essential input requirements compactly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context on required versus optional parameters ('Only symbol is required') and notes defaults, which informs when the tool could be called. However, it does not explicitly name alternatives or conditions for using this tool over other order-related siblings, leaving the 'when to use vs. alternatives' guidance largely implicit.
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 AP accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| limit | No | Maximum number of documents to return. Omit for all. | |
| symbol | Yes | ETF symbol, e.g. "SPY.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by specifying the region restriction and the exact error name (DcRegionRestricted) for AP accounts. Annotations already declare readOnly and idempotent, so no side effects need disclosure. This extra error detail is valuable and not redundant.
Agents need to know what a tool does to the 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 zero filler. The primary purpose is front-loaded, followed by the region restriction. Every word serves a purpose, and the length is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 the essential purpose and a critical region-specific behavior. The schema documents the required symbol and optional limit, which is sufficient for a read-only document retrieval tool. It does not describe return format or pagination, but for a safe, idempotent read operation these are less critical. The undocumented _jq parameter 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 description adds no parameter-specific information. Schema descriptions cover symbol and limit, but the optional _jq parameter has no description in either the schema or the tool description. With 67% schema coverage (moderate, not high), the description should compensate for the undocumented parameter but does not, leaving _jq ambiguous.
Input schemas describe structure but not intent. Descriptions should explain 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 'regulatory/prospectus documents (etf-files) for a US ETF'. It is specific enough to distinguish from sibling tools like filings or financial_report, which cover broader or different document types. The US-only scope further narrows purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 mentions that AP accounts will error with DcRegionRestricted, giving a clear condition for when not to use this tool. However, it does not mention alternative tools or when to prefer this over other document-related tools, so it lacks a full comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exchange_rateExchange RateBRead-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 |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, open-world, idempotent, and non-destructive, and the description's 'Get' matches those semantics. It adds the return field names and scope, which is useful, but it does not disclose behavior such as data freshness, rate basis, or whether results are static vs. real-time.
Agents need to know what a tool does to the 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, front-loads the action and result, and wastes no words. The return structure and currency examples are placed immediately after 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?
For a simple read-only lookup, the description gives adequate scope and output shape. But it leaves the only parameter completely unexplained and provides no caveats about rate timing, supported currency list, or response size, so an agent still has open questions before calling 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?
The only parameter, _jq, has 0% schema description coverage and the tool description does not mention it at all. Since the description must add meaning beyond the schema and it does not compensate for this gap, an agent has no way to know what _jq does or whether it is required.
Input schemas describe structure but not intent. Descriptions should explain 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-plus-resource construction: 'Get exchange rates for all supported currencies.' It names the output shape (list of from/to currency, rate, timestamp) and example currency scope, so an agent can distinguish this from the many sibling market-data tools 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?
The description implies a general read-only lookup use case ('all supported currencies'), and no sibling tool appears to compete with this purpose. However, it gives no explicit guidance on when to choose this over alternatives, nor does it mention that no currency-scoping parameters are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
executiveExecutiveCRead-onlyIdempotentInspect
Get company executive and board member information.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond the purpose—it does not describe the response structure, whether data is snapshot or historical, pagination, or any other implementation detail. For a tool with no output schema, this is a notable gap.
Agents need to know what a tool does to the 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 with no filler. It front-loads the core action clearly. However, its brevity edges toward under-specification, as it omits useful detail without becoming verbose; it earns a high score for efficiency but not perfection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 should clarify what information is actually returned. It only says 'executive and board member information,' which is vague and does not specify fields, formatting, or any prerequisites. Given the complexity of financial data tools and the large sibling set, this description is incomplete for effective agent 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 schema describes the required 'symbol' parameter with an example, but the optional '_jq' parameter has no schema description, and overall schema description coverage is only 50%. The description itself makes no mention of any parameters, so it does not compensate for the missing '_jq' explanation or add any parameter-related context 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 is a single clear sentence stating it retrieves executive and board member information. It specifies the resource type but does not explicitly differentiate it from sibling tools like 'company' or 'institutional_views', though the focus on executives/board members is distinct enough for an agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 conditions, exclusions, or related tools, leaving the agent without context for selecting it among many similar data-query siblings.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 non-destructive behavior. The description adds the return format and scope ('for the symbol'), which is useful but not extensive. 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 concise sentences, front-loaded with the core purpose and return structure. No wasted 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?
For a simple read-only tool with annotations covering safety, the description provides the return items and scope. It lacks pagination or filtering details, but these are not critical given the tool's simplicity and the presence of annotations.
Complex tools with many parameters or behaviors need more documentation. 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 only 50% (symbol documented, _jq undocumented). The description mentions 'for the symbol' which aligns with the symbol parameter, but it does not explain _jq or add any detail beyond the schema. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain 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 'regulatory filings', and lists example types (8-K, 10-Q, 10-K). It also specifies the return structure, making the tool's purpose unmistakable and distinct from siblings like etf_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 regulatory filings for a symbol are needed, but it does not explicitly contrast with alternative tools or state when not to use it. The context is clear enough for a data-retrieval tool, though exclusions are absent.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful behavior beyond the read-only annotations: it discloses default date behavior and the truncation risk for ranges over two weeks. No contradiction with readOnly/openWorld/idempotent hints.
Agents need to know what a tool does to the 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 front-load the tool's purpose, then cover optional parameters, defaults, and a critical usage constraint (2-week range cap). 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?
Complete enough for a read-only calendar query: category values, date defaults, and truncation behavior are all disclosed. It does not explicitly repeat the required category parameter, but that is present in the schema, and no output schema exists to detail 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?
Adds value beyond the schema by explaining that start and end default to today plus 7 days and that ranges over 2 weeks may be truncated. With 80% schema coverage, the description complements rather than duplicates the schema, though _jq remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (finance calendar) and enumerates the exact event categories it covers, which makes its purpose immediately clear. It does not explicitly contrast itself with overlapping sibling tools like corp_action or dividend, but the category list provides enough differentiation for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: start/end are optional, default to today plus 7 days, and ranges should stay under 2 weeks to avoid truncation. It does not explicitly state when to prefer this over sibling tools, but the category-driven description gives sufficient guidance for most cases.
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 |
|---|---|---|---|
| _jq | No | ||
| 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) |
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 description is not required to restate these. It adds no extra behavioral context such as rate limits, response volume, or handling of invalid symbols. The description is consistent with annotations and does not contradict them, but it does not enrich the behavioral picture.
Agents need to know what a tool does to the 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 core purpose ('Get financial reports') and then packs the parameter value definitions into a compact shorthand. There is zero fluff, and every part earns its place. It is highly concise while conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data retrieval tool with a required symbol parameter and two optional parameters fully explained in the schema, the description covers the essential calling information. It does not describe the return format, but no output schema exists and annotations already cover safety. The main gap is the lack of usage guidance relative to siblings, but that is captured in a separate dimension. Overall, the description is sufficient for a correct call.
Complex tools with many parameters or behaviors need more documentation. 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 75%, with kind, report_type, and symbol each having descriptions. The description repeats the kind and report_type values in shorthand (IS/BS/CF/ALL, af/saf/q1/q2/q3/qf) but does not add meaning beyond what the schema already provides. It does not clarify edge cases like default values (kind defaults to ALL per schema) beyond what the schema states. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 (income statement, balance sheet, cash flow) and enumerates the kind and report_type values. The purpose is specific and understandable. However, it does not explicitly differentiate itself from sibling tools like financial_report_latest or financial_report_snapshot, which limits sibling 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 provides no guidance on when to use this tool versus alternatives such as financial_report_latest or financial_statement. It does not mention prerequisites, exclusions, or conditions that would route an agent to a different tool. The agent must infer usage from the name and parameters alone.
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 AP accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| report | No | Report period: "af" (annual, default), "saf" (semi-annual), "qf" (quarterly full), "q1"/"q2"/"q3". | |
| symbol | Yes | Security symbol, e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false). The description adds useful behavioral context beyond that: the region restriction and the specific DcRegionRestricted error for AP accounts. 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 two tight sentences with no filler. It front-loads the core action and resource, then packs the report options and regional constraint efficiently. 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 data retrieval tool with three parameters and no output schema, the description covers the essential invocation details: action, resource, report choices, default, and error condition. It omits return-format details and _jq semantics, but the core usage is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with _jq undocumented. The description repeats the report option values already present in the schema and mentions the US-symbol context, but adds no substantive parameter meaning beyond the schema. A baseline 3 is appropriate since description coverage is in the mid range.
Input schemas describe structure but not intent. Descriptions should explain 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 ('key financial metrics (fin-keyfactor)') for US symbols, and includes report-period terms. However, it does not distinguish this tool from sibling tools like financial_report_latest or financial_report_snapshot, 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?
There is an explicit usage restriction ('US accounts only') and a concrete failure signal ('errors with DcRegionRestricted for AP accounts'), which gives some when-not guidance. But the description does not mention any alternative tool to use for non-US accounts or for other financial report needs, so the guidance is incomplete.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds a modest behavioral cue by specifying a 'summary' result and 'latest' time scope, but it does not disclose what the summary contains, data freshness, or any 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?
One clear sentence with no filler. It front-loads the action and object, and every word contributes to 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?
With no output schema, the description should explain what a 'latest financial report summary' actually returns, but it does not. It also fails to route the agent among the many financial-report sibling tools, leaving a significant completeness gap 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 coverage is 50%, with the symbol parameter described and the _jq parameter left undocumented. The description only says 'for a security,' which adds little beyond the schema's symbol description and does not compensate for the undocumented parameter or clarify symbol format or requirements.
Input schemas describe structure but not intent. Descriptions should explain 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 ('latest financial report summary') plus a target ('a security'). It clearly states what the tool does, but it does not distinguish itself from the many sibling financial-report tools such as financial_report, financial_report_snapshot, or financial_report_key_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool instead of alternatives. With multiple closely related financial-report siblings, an agent has no basis for choosing this tool over financial_report_snapshot or financial_report_key_metrics.
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 SnapshotBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds some context about the returned content (e.g., yoy/cmp, ratio types), which is useful but not behavioral in nature. No additional behavioral traits (rate limits, pagination, auth) are disclosed, 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 a single, compact sentence that front-loads the purpose and uses a colon and commas to organize field groups. It is efficient with no filler, though the dense comma-separated list could be slightly more readable. Still, it earns a 4 for economy and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 5 parameters, no output schema, and a moderately complex data structure, the description is only partially complete. It lists some return fields but omits how fiscal_year/fiscal_period interact or the meaning of the '_jq' parameter. It does not explain the full return shape or edge cases, so it meets the minimum but leaves 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 schema covers 80% of parameters with descriptions, so the baseline is 3. The description adds a redundant mention of report types ('qf/saf/af') already present in the schema, and mentions output fields (fo_revenue etc.) but not parameter specifics. It does not compensate for the undocumented '_jq' parameter, but overall it adds minimal value 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 action ('Get financial report snapshot') and lists the specific data fields returned (report_desc, fo_revenue/ebit/eps, fr_* ratios). It is specific enough to distinguish from generic report tools, though it does not explicitly differentiate from close siblings like financial_report_latest or financial_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?
No guidance is provided on when to use this tool versus the many sibling financial report tools. It neither states prerequisites nor excludes alternatives, leaving the agent to guess based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
financial_statementFinancial StatementsBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnly, idempotent, and non-destructive hints are already provided by the annotations)Skip; the description confirms a read-only retrieval operation. It adds no extra behavioral caveats (e.g., pagination, default report period fallback), but no annotation contradiction 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 compact sentences: the first states the tool's purpose Capitalization, the second explains parameter values. The list of report periods is packed but readable. 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 readOnly and idempotent annotations, the usage context is mostly safe. However, the description does not clarify when to prefer this tool over financial_report, financial_report_snapshot, or financial_report_key_metrics, and does not describe the response shape. From a decision perspective, an agent might struggle to differentiate from those siblings.
Complex tools with many parameters or behaviors need more documentation. 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 explains the meaning of 'kind' (IS/BS/CF) and 'report' (af, qf, q1/q2/q3), which is valuable because the schema only describes 'symbol'. However, _jq remains unexplained, and the mapping between q1/q2/q3 and quarters is implied rather than explicit.
Input schemas describe structure but not intent. Descriptions should explain 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'), a clear resource ('financial statements'), and enumerates the statement types (income statement, balance sheet, cash flow) via the kind parameter. This distinguishes it from broad tools like company or dividend, though it doesn't explicitly differentiate from closely named siblings like financial_report or financial_report_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool versus siblings such as financial_report, financial_report_snapshot, or statement_export. It doesn't mention prerequisites, common use cases, or which statement type to request under which circumstances.
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 |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that the tool returns both forecast and historical estimates, which is useful. However, it does not disclose details like whether the data is delayed, what time range is covered, or whether it requires specific market data subscriptions. With annotations covering the core behavioral traits, 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 a single, concise sentence that front-loads the main purpose. It is efficient and easy to parse, though it could have added a brief note on usage context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one required parameter and no output schema, the description is adequate but not complete. It does not explain what the returned data looks like (e.g., fields like forecast EPS, number of analysts, estimate history period) or any limitations. Given the tool's simplicity, this is a minor gap, but the description could be more helpful.
Complex tools with many parameters or behaviors need more documentation. 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 50%: the 'symbol' parameter is documented with an example, but '_jq' has no description. The description does not add meaning for '_jq' or clarify the expected format of the response. Since the schema covers half the parameters and the description adds no extra parameter context, 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 'Get EPS forecast and analyst estimate history' clearly states the verb (Get) and resource (EPS forecast and analyst estimate history). It distinguishes itself from siblings like financial_report_latest or consensus, though it doesn't explicitly name an alternative. The title 'Forecast EPS' reinforces the purpose, so the agent can infer what data this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 EPS forecast data, but it does not explicitly state when to use this tool versus alternatives like 'consensus' or 'financial_report_latest'. There is no mention of prerequisites or context (e.g., requires a symbol, only for stocks with analyst coverage). The guidance is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_holderFund HoldersBRead-onlyIdempotentInspect
Get funds and ETFs that hold a given symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 and idempotentHint, so the safety profile is covered. The description adds that the lookup covers funds and ETFs holding a given symbol, but it does not note limitations such as pagination, date scoping, or whether only certain markets are covered.
Agents need to know what a tool does to the 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 filler. It states the action and resource 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?
For a simple read-only lookup this is mostly sufficient, but there is no output schema and no mention of list size limits, ordering, or whether only funds listed on certain markets are covered. The omission of _jq semantics leaves an agent guessing about an optional parameter.
Complex tools with many parameters or behaviors need more documentation. 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 documents 'symbol' with an example, and the description merely restates that the symbol is the search input. The second parameter (_jq) is unexplained in both schema and description, so the description does not compensate for the low schema coverage of that 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?
Clearly states that the tool returns funds/ETFs holding a given security, using a specific verb and object. It does not explicitly distinguish itself from sibling tools like fund_positions or broker_holding, but the inverse-holding lookup scope is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 other lookup tools such as fund_positions, broker_holding, or dividend_detail. An agent is given no selection criteria or distinguishing constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_positionsFund PositionsCRead-onlyIdempotentInspect
Get current fund positions.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that this is read-only, idempotent, and non-destructive. The description adds the word 'current', implying a snapshot of live positions, which is a mild behavioral cue beyond the annotations. It does not detail pagination, output shape, or any rate-limit/session requirements, but given the strong annotation coverage, this is an acceptable baseline.
Agents need to know what a tool does to the 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, focused sentence that directly states the operation. There is no filler or redundancy, and it is front-loaded with the essential information. This is an example of appropriate 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?
The tool is simple (one optional parameter, no output schema), but the description is still incomplete because it fails to clarify the meaning of 'fund positions' and provides no insight into the '_jq' parameter. While annotations carry the safe-read signal, context about result shape or record types is missing, leaving an agent may struggle to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for a single '_jq' parameter, so the description must explain its purpose, and it does not. The description does not mention that '_jq' may be a query filter or how it affects results. With no schema descriptions and no guidance, an agent would be completely in the dark about this parameter; this is a severe gap.
Input schemas describe structure but not intent. Descriptions should explain 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 a clear resource ('current fund positions'), which adequately states the tool's purpose. It is sufficiently distinct from siblings like 'stock_positions' by the asset type, though it does not explicitly reference a sibling or nuance. The main ambiguity lies in whether 'fund positions' refers to mutual fund holdings or position reports, but the core operation is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool as opposed to alternatives. It does not mention prerequisites, context, or cases where a different tool (e.g., stock_positions, account_balance) would be more appropriate. The agent is left to infer usage solely from the name and the generic description.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 already mark destructiveHint: true and idempotentHint: true, but the description adds substantial behavioral context beyond that: the dry-run-then-execute mechanism, the single-use confirmation code, the 10-minute expiry, the requirement to show the preview to the user, and the explicit warning never to quote the code on the agent's own initiative. This goes far beyond the structured annotations and is essential for safe invocation.
Agents need to know what a tool does to the 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: it leads with the purpose, then emphasizes the mandatory confirmation in caps, and provides a clear step-by-step protocol. It is somewhat repetitive (the confirmation process is described in both the description and the execute parameter), but the tool description itself is appropriately sized and front-loaded, with each sentence contributing to the necessary workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complexity of the two-step confirmation and the absence of an output schema, the description is remarkably complete. It explains the dry run, the preview, the confirmation code's single-use and expiry, the requirement to wait for user confirmation, and the prohibition on autonomous quoting. An agent has everything needed to call the tool correctly, including the return values (preview and confirmation_code) even though there is no 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 67%, and the execute parameter already has an extensive description in the schema explaining the dry-run and confirmation code semantics. The tool description reinforces the flow but does not add new meaning beyond what the schema provides for execute. order_id is simply described as 'Grid order ID' in both the schema and the description, so no additional parameter semantics are added. Baseline of 3 is appropriate since the schema carries most of the parameter 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 states a specific verb and resource ('Cancel (terminate) a grid order by order_id') and makes the scope unambiguous by naming grid orders, distinguishing it from siblings like cancel_order (which presumably handles non-grid orders) and grid_suspend (pause vs terminate). The purpose is clear and precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 details the two-step confirmation protocol: call without execute for a dry run, show the preview, then call again with the confirmation code after user confirmation. It clearly states when to use this tool (for grid orders) and provides the mandatory usage flow. It does not explicitly contrast with alternatives like cancel_order, but the grid-order specificity implies the context, and the step-by-step instructions are strong 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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and dynamic data. The description adds value by specifying the return content (embedded sub-orders, history) and the paging mechanism (history_id cursor + limit), which is beyond what annotations provide. No contradiction detected.
Agents need to know what a tool does to the 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 fluff. The first sentence front-loads the core purpose and content, the second covers paging. Every word earns its place, and the structure is ideal for quick agent scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 detail tool with no output schema, the description fully covers what the agent needs: what it returns (parameters, status, child orders, history), how to page (history_id + limit), and the resource identity (order_id). Nothing essential 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 75%, and the schema already describes limit, order_id, and history_id with accurate definitions. The description reinforces the paging relationship ('history_id cursor + limit paging') but adds little beyond the schema's own descriptions. The _jq parameter remains undocumented, but that's a common query param. With strong schema coverage, the 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 states a specific verb ('Full detail for') and resource ('one grid order'), and enumerates the exact content: rule parameters, status, embedded child orders (grid_sub_orders), and lifecycle history (grid_order_history). This clearly differentiates it from siblings like grid_list (summary) and grid_trigger_history (only history), leaving no ambiguity about 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 'Full detail for one grid order' implies use when comprehensive single-order detail is needed, and the mention of paging indicates it handles large histories. However, it does not explicitly exclude alternatives like grid_list or grid_trigger_history, nor state when to prefer them. It gives clear context but lacks explicit when-not guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| 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"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only and open-world, so the description need not re-state safety. It adds that results are paginated and sortable and that status accepts a comma-joined set, which is useful behavioral context. It does not describe response format or any rate-limit behavior, but that is a minor gap for a read-only list.
Agents need to know what a tool does to the 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 tight sentences: the core purpose is front-loaded, then the filtering and pagination/sort capabilities follow. No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 listing tool, the description plus schema cover purpose, filters, pagination, and sorting. However, it leaves _jq undocumented and, with no output schema, says nothing about the response shape; it also does not contrast with grid_list_by_ids. These gaps keep it from being fully 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 description coverage is 86%, so most parameter meaning is already in the schema; the description mostly restates page/limit/sort support and the status example already present in the schema. It adds no new semantics for the undocumented _jq 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 a specific verb ('List') and resource ('grid trading orders'), and the filtering/pagination details make clear this is the general listing tool rather than grid_detail or grid_submit. The only minor ambiguity is grid_list_by_ids, but the lack of an id parameter and the symbol/status filters distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about when to choose this over grid_list_by_ids or grid_detail, nor any exclusions. The description implies a listing use case but never states when-not-to-use or names alternatives.
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 IDsBRead-onlyInspect
Fetch specific grid orders by their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| order_ids | Yes | Grid order IDs to fetch, e.g. ["123", "456"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. However, the description adds no extra behavioral context such as error handling, return format, or potential limitations (e.g., maximum number of IDs). It simply restates the core action without enriching the agent's understanding.
Agents need to know what a tool does to the 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 redundant words. It conveys the essential purpose efficiently without extraneous 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?
For a simple read-only tool with two parameters and no output schema, the description is minimally adequate. However, it omits usage guidance (when to choose this over siblings) and does not address potential edge cases like invalid IDs or empty responses. These gaps are noticeable 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 50% because the _jq parameter lacks a description. The description text only reinforces order_ids, which is already documented in the schema. It does not compensate for the undocumented _jq parameter, leaving its purpose ambiguous.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb ('fetch') and resource ('specific grid orders') with the selection criterion ('by their IDs'). It differentiates from sibling tools like grid_list (which likely lists all orders) and grid_detail (likely single order) by specifying the multi-ID retrieval 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?
No guidance is given on when to use this tool versus alternatives such as grid_list (for all orders) or grid_detail (for a single order). The description does not state exclusions or provide context about scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
|---|---|---|---|
| _jq | No | ||
| 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?
No annotations are provided, so the description carries the full responsibility. It clearly discloses the dry-run default, the irreversible effect of setting `execute`, the code invalidation rule, and the prohibition on auto‑confirmation. This makes the side-effect profile and workflow explicit.
Agents need to know what a tool does to the 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 focused paragraph that leads with the core action and immediately surfaces the most safety-critical behavior (dry-run vs. execute). No filler, every sentence carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complete for its complexity: it explains the two-step protocol, the invalidation condition, and the prohibition on auto-confirmation. Combined with the richly documented schema, an agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. 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 most parameters in detail high schema coverage. The description adds crucial semantics for `execute` (dry-run gate, invalidation, no auto-confirm) that go beyond the schema, and clarifies that the entire rule is replaced, implying all parameters are taken as a full snapshot. A small deduction because the description does not add anything about `order_id` or the numeric parameter ranges, but those are already 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?
States the exact operation ('Replace an existing grid rule's entire rule') with a specific verb and object. The 'entire rule' qualifier distinguishes it from partial updates, and the sibling names (place_grid_rule, cancel_grid_rule) make the contrast 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 explicitly mandates the two-step protocol: call without `execute` to get a confirmation code, show the preview, then call with `execute` only after explicit user confirmation. It also warns that any parameter change invalidates the code and that auto-confirmation is forbidden. This is actionable, unambiguous guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 include readOnlyHint=false and destructiveHint=false; the description adds critical behavioral context: the tool is a dry run unless the confirmation code is passed, and restarted grids resume placing orders automatically. It also explains the confirmation code is single-use and tied to the exact request. The description doesn't explicitly state that no confirmation code means nothing is sent, but the schema's parameter description covers that. It adds rich 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 dense but every sentence earns its place: the purpose is stated first, then the mandatory two-step protocol, then the safety warning about the auto-resuming grid. It is front-loaded with the key safety information and avoids 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 that this is a mutation tool with no output schemavii and annotations do not cover the confirmation protocol, the description provides all necessary information: how to use it safely, what to do before and after, the caveats about the confirmation code, and the behavior of the restarted grid. There is no missing information that would cause an agent to misuse the 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 67%; the only required parameter (order_id) has a brief description ('Grid order ID'), and execute is fully described in the schema. The description adds essential meaning to the execute parameter: it explains the dry-run/confirmation protocol, single-use nature, expiration, and that changing any field invalidates the code. This compensates for the missing coverage of order_id with additional context.
Input schemas describe structure but not intent. Descriptions should explain 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: restart (resume) a suspended grid order by order_id. It uses a specific verb ('restart') and a specific resource ('grid order'), and the domain of resuming a suspended order is distinct from siblings like grid_suspend and grid_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit protocol: first call without execute for a dry run, show the preview to the user, and only call again with the confirmation code after explicit user confirmation. It also warns never to quote the code on the agent's own initiative. This clearly distinguishes when to use this tool and the required sequence.
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 |
|---|---|---|---|
| _jq | No | ||
| 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). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Reveals the tool performs a real order submission, requires a dry-run/confirmation protocol, has a 10-minute code expiry, is single-use, and that changing any field invalidates the code. This goes well beyond the annotations' simple read-only/destructive flags.
Agents need to know what a tool does to the 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 succinct yet dense with critical usage constraints, front-loads the action and protocol, and avoids redundant restating of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 essential invocation context, including the two-phase confirmation, single-use code, expiry, and the irreversible nature of going live. It fully equips an agent to decide when and how to use 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?
The description clarifies the critical `execute` parameter behavior (dry-run vs. confirming with the code) and its constraints. However, most other parameter semantics are left to the schema's own descriptions, which are already fairly complete.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb and resource (
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 describes the two-step workflow: call without execute first, then re-call with the confirmation code only after user confirmation. Also warns against quoting the code on one's own initiative and explains the dry-run purpose.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 discloses critical behavioral traits beyond the annotations: it is a DRY RUN unless a confirmation_code is passed, the code is single-use, expires in 10 minutes, and applies only to the exact request. It also warns that a grid strategy keeps placing orders once live, so the agent must never quote the code on its own initiative. This is rich, safety-critical context that the annotations (readOnlyHint=false, idempotentHint=true) do not fully convey.
Agents need to know what a tool does to the 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 core action and resume sibling, then dives into the mandatory confirmation protocol. It is somewhat dense and repeats some details that also appear in the execute parameter's schema description, but every sentence carries safety-relevant information. Slightly redundant with the schema, but appropriately sized for a high-stakes mutation 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?
For a mutation tool with no output schema, the description covers the essential context: what the tool does, the mandatory two-step confirmation, the dry-run behavior, the confirmation code's constraints, and the warning about autonomous grid behavior. The sibling list provides the alternative (grid_restart). Nothing critical is missing for an agent to 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 67% (order_id and execute are described in the schema; _jq is not). The description adds important semantics for the execute parameter: it explains the dry-run/confirmation flow, single-use nature, expiry, and exact-request binding. This goes beyond the schema's own description and compensates for the undocumented _jq 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 states a specific verb ('Suspend (pause)') and resource ('a running grid order by order_id'), and explicitly names the sibling tool for resuming ('Resume with grid_restart'). This clearly distinguishes it from grid_cancel, grid_replace, and grid_restart in the sibling 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 explicit when-to-use guidance: it is for pausing a running grid order, and it names the alternative for resuming (grid_restart). It also gives a mandatory two-step confirmation protocol, telling the agent exactly when to call the tool (first without execute, then with the confirmation code after user confirmation).
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 InfoBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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=true and openWorldHint=true, so the agent knows this is a safe read operation. The description adds useful context about the kind of data returned (security name, last price, board lot sizes, price-step table, channel/authorization info) and the input constraint (symbol, not order_id). It doesn't disclose rate limits, pagination, or what happens for invalid symbols, but for a read-only info tool with annotations covering safety, this is adequate.
Agents need to know what a tool does to the 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, information-dense sentence that front-loads the tool's purpose ('Pre-trade grid setup info') and the key disambiguation ('takes a symbol, not an order_id'). It lists the return fields efficiently. It is slightly long and trails off with 'supported s...' which appears truncated, but the structure is otherwise clean and every clause 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 read-only info tool with no output schema, the description covers the main return fields and the input constraint. It doesn't explain the '_jq' parameter, doesn't specify the format of the price-step table, and doesn't mention error behavior for invalid symbols. Given the tool's moderate complexity and the absence of an output schema, the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: the 'symbol' parameter is documented in the schema, but '_jq' has no description. The description adds meaning by clarifying that the symbol is a security symbol and that the tool does not take an order_id, which reinforces the schema. However, it doesn't explain the '_jq' parameter at all, and the description's mention of 'bid_size' table and channel info doesn't map to any additional parameters. Baseline 3 is appropriate since the schema covers the main 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 states a specific verb+resource: 'Pre-trade grid setup info for a security' and explicitly disambiguates that it takes a symbol, not an order_id. It lists concrete fields (security name, last price, board lot sizes, price-step table, channel/authorization info), which distinguishes it from grid_detail and grid_list. It loses one point because it doesn't explicitly name a sibling alternative, though the 'not an order_id' note 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?
The description implies usage context: it is for pre-trade grid setup, so an agent would use it before submitting a grid order. It also hints at what it is not (takes a symbol, not an order_id), which helps distinguish it from order_id-based grid tools. However, it doesn't explicitly state when to prefer this over grid_detail, grid_list, or static_info, nor does it mention any exclusions or prerequisites.
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 |
|---|---|---|---|
| _jq | No | ||
| page | No | Page number (default 1). | |
| limit | No | Records per page (default 20). | |
| order_id | Yes | Grid order ID whose trigger history to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating no side effects. The description adds the specific data returned (each triggered child order with its details) and pagination support. It does not disclose potential rate limits, field descriptions beyond the schema, or whether 'trigger time' is in a specific format. The additional context on return content is valuable 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?
The description is a single, focused sentence that states the purpose and lists key data fields, followed by a brief note on pagination support. No fluff, no repetition of schema details already available. It is appropriately front-loaded with 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?
For a read-only retrieval tool with annotations covering safety and a clear parameter list, the description is largely sufficient. It covers the essential data returned and pagination. The main gap is the _jq parameter and lack of explicit return format, but since there is no output schema, the description could have listed typical return structure. Still, it is complete enough for an agent to understand the tool's role 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 75% (3 out of 4 parameters have descriptions). The description does not add beyond the schema for page, limit, and order_idcause the schema already explains them. The _jq parameter is undocumented in both the schema and description, so the 75% coverage leaves a gap that the description does not fill. It does clarify that order_id identifies the grid order, matching 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 the precise resource (trigger history for a grid order), the data fields returned (price, quantity, executed price/qty, trigger time), and the scope (one grid order identified by order_id). It clearly distinguishes from sibling tools like grid_list or grid_detail which are about the grid orders themselves, not their execution 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 description implies when to use it: to retrieve trigger history for a specific grid order. It does not explicitly mention alternatives or when not to use it, but given the context of many related grid tools, the purpose is clear enough for basic selection. Missing explicit exclusions or comparisons to siblings like grid_list or history_executions.
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 DateARead-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 |
|---|---|---|---|
| _jq | No | ||
| 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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful behavioral context by specifying default values for period, forward_adjust, and trade_sessions, which clarifies the tool's behavior when these parameters are omitted. 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, concise sentence that front-loads the core purpose and then efficiently lists the key defaults. Every word earns its place, and there is no 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?
For a read-only, idempotent data retrieval tool with high schema coverage, the description is largely complete. It covers the required parameter, the defaults, and the date-range scope. The only minor gap is that it doesn't explicitly mention the output format or pagination, but since there is no output schema and the tool is a simple historical data fetch, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. 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 86%, so the schema already documents most parameters. The description adds value by clarifying that only symbol is required and by summarizing the defaults for period, forward_adjust, and trade_sessions. However, it does not add meaning beyond what the schema provides for parameters like start, end, and _jq. Baseline 3 is appropriate given the 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's function: retrieving historical candlestick data by date range. It specifies the resource (candlestick data), the verb (get), and the key parameter (symbol required). It also distinguishes itself from the sibling tool history_candlesticks_by_offset by emphasizing date range, which is a clear differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool: when you need historical candlestick data by date range. It mentions that only symbol is required and lists the default values for optional parameters. However, it does not explicitly state when NOT to use it or mention the alternative history_candlesticks_by_offset, which would have made the usage guidance more complete.
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. If the account's entitlement caps out below the requested count, this returns as many candles as allowed instead of erroring — check the returned array length against count if an exact number matters.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, so the description's job is to add behavior beyond that. It does: it documents all defaults (period, count, forward_adjust/forward, trade_sessions) and, critically, the entitlement-cap fallback that returns fewer candles instead of erroring, advising the caller to check array length. This is exactly the kind of non-obvious runtime behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose, then list defaults, then the key edge-case caveat. Every clause earns its place; no 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 an 8-parameter read-only tool this is almost complete: defaults are enumerated and the only failure/edge case is disclosed. The main gap is that with no output schema, the description does not describe the returned candlestick object's structure (fields/ordering), though it does imply an array of candles.
Complex tools with many parameters or behaviors need more documentation. 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 88%, so the schema already documents most parameters. The description adds the entitlement-cap behavior for count (returns as many as allowed when capped) and restates the defaults, which is modest added meaning beyond the schema. Overall the parameter information is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('historical candlestick data'), and the distinguishing mechanism ('by offset from a reference time'). The name and description together make it clear this is the offset-based variant, distinguishing it from sibling history_candlesticks_by_date without needing to open that tool's 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?
The description implies when to use the tool (when you want candles offset from a reference time) but never explicitly contrasts it with alternatives like history_candlesticks_by_date or candlesticks. It provides no 'use X instead when...' guidance, so an agent must infer the applicable context.
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 every trade execution (fill) in a date range, filtered by execution time (trade_done_at) and auto-paginated to return the complete set (never truncated at the 1000-per-page cap). Returns executions[]{order_id, trade_id, symbol, side, quantity, price, trade_done_at}; trade_id is the stable dedupe key. start_at/end_at in RFC3339.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| end_at | Yes | End time (RFC3339) | |
| symbol | No | Filter by symbol (optional) | |
| us_page | No | US accounts only: page number (default 1). Ignored for AP accounts (the region is inferred from the account — do not pass it). | |
| start_at | Yes | Start time (RFC3339) | |
| us_limit | No | US accounts only: page size (default 20). Ignored for AP accounts. |
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 valuable behavioral context: auto-pagination ensures the complete set is never truncated at the 1000-per-page cap, and trade_id is a stable dedupe key. These details go beyond the annotations and clarify how results are delivered.
Agents need to know what a tool does to the 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 three sentences, each earning its place: the first states purpose and pagination behavior, the second lists return fields and the dedupe key, the third specifies the time format. It is front-loaded with the core purpose and contains 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 complexity (6 params, no output schema), the description covers essential details: return fields, dedupe key, pagination behavior, and time format. It does not repeat the optional symbol filter or US/AP account distinctions, but those are documented in the schema. The description is adequate for an agent to call 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 coverage is 83% (5/6 parameters have descriptions). The description adds meaning to the start_at/end_at parameters by specifying RFC3339 format and clarifies that pagination is automatic, which impacts the interpretation of us_page/us_limit. It also notes filtering by execution time (trade_done_at), complementing the schema's basic field 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 fetches all trade executions (fills) within a date range, filtering by execution time and auto-paginating to return the complete set. It uses specific verbs and resources, distinguishing it from siblings like today_executions and history_orders. The purpose 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 does not provide explicit guidance on when to use this tool versus alternatives. It implies historical context via the name and date-range parameters, but lacks any mention of alternative tools or conditions for selecting this one. An agent would need to infer usage from the name and schema, which is a notable gap.
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 TemperatureBRead-onlyIdempotentInspect
Get historical market temperature time series.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| end | Yes | End date (yyyy-mm-dd) | |
| start | Yes | Start date (yyyy-mm-dd) | |
| market | Yes | Market code: HK, US, CN, SG |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the 'time series' output notion, but no additional behavioral detail such as return format, date handling, or pagination. It is consistent with annotations though 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, concise sentence with no filler. Every word serves to state the purpose, and the content 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 4-parameter tool with no output schema, the description is minimal and relies on the schema for parameter meanings. It does not explain what the 'market temperature' data specifically represents or what the returned time series looks like, but it may be sufficient for a straightforward historical read.
Complex tools with many parameters or behaviors need more documentation. 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 75% — market, start, and end are explained, while _jq is undocumented. The description adds no parameter semantics beyond the schema, leaving _jq undefined. The baseline is adequate for the three documented parameters, but it doesn't compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Get historical market temperature time series.' This clearly distinguishes the tool from its sibling market_temperature by adding the historical qualifier, though it doesn't explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 vs alternatives. It does not mention the sibling tool market_temperature for current readings, nor does it state when not to use this tool or any prerequisites.
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 |
|---|---|---|---|
| _jq | No | ||
| end_at | Yes | End time (RFC3339) | |
| symbol | No | Filter by symbol (optional) | |
| us_page | No | US accounts only: page number (default 1). Ignored for AP accounts (the region is inferred from the account — do not pass it). | |
| start_at | Yes | Start time (RFC3339) | |
| us_limit | No | US accounts only: page size (default 20). Ignored for AP accounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only/idempotent, and the description adds useful behavioral details: excluded today's orders, returned fields, and how pagination works via us_page. This gives the agent a concrete understanding of the API response and paging without overpromising.
Agents need to know what a tool does to the 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, dense with relevant information, and well-structured: purpose, return type, parameter details, and pagination behavior are all covered in three sentences 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?
The description provides enough information for an agent to call the tool correctly: date range, return format, and pagination behavior. Minor omissions include timezone assumptions and explicit behavior for AP accounts regarding pagination, but the schema partially covers those.
Complex tools with many parameters or behaviors need more documentation. 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 each parameter except _jq, but the description adds cross-parameter logic: us_page and us_limit are 'US accounts only', us_limit defaults to 20, and passing us_page retrieves additional pages. This goes beyond simple schema reuse and clarifies how the pagination parameters interact.
Input schemas describe structure but not intent. Descriptions should explain 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 historical orders between dates, with the explicit note 'excludes today' to distinguish it from current-order tools. It also lists the returned order fields, making the resource type and content 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: for historical orders, excluding today's ordersikuha. It does not explicitly name sibling alternatives, but the date scope and pagination caveat provide clear context. The 'US accounts only' note adds a usage restriction, though it does not explicitly discuss when to prefer a different tool.
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 |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | BK counter_id from `industry_rank`, e.g. "BK/US/IN00258". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so no contradiction exists. The description adds that each node shows stock count, daily change, and YTD change, which is useful output context. It does not mention output ordering, pagination, or network behavior, but with the annotation coverage the added context is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence defines the function and input source, while the second quickly lists the per-node output actions. An example is included, but it is essential for 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?
Without an output schema, the description does tell an agent what each node contains (stock count, daily change, YTD change) and what input is needed. It leaves the exact JSON structure of the tree implicit, but the term "hierarchical" and the node-level description give the kind of useful, minimal context to start calling the 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 only 50%: the symbol parameter has both schema and description coverage, but the optional `_jq` parameter has no description anywhere. The description repeats the schema example "BK/US/IN00258" for symbol, which is good, but does not compensate for the unexplained `_jq`.
Input schemas describe structure but not intent. Descriptions should explain 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 output: "Hierarchical sub-sector tree for an industry group," and names the input type via "Accepts BK counter_id from industry_rank (e.g. BK/US/IN00258)." It conveys what each node shows but lacks an explicit verb like "retrieve" or "list," leaving the action implied by the noun "tree."
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisite: input comes from industry_rank, which tells agents when this tool can be used. However, it provides no exclusion criteria or explicit grain mentioning alternatives such as industry_valuation or industry_rank. Agents must infer that this tool is for hierarchical drill-down rather than aggregate metrics.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 mark it as read-only, idempotent, and non-destructive, so the safety profile is covered. The description goes beyond that by revealing the output shape (items[]{counter_id, name, chg, lists[]}) and the counter_id format (BK/US/IN00258). It still omits details like the meaning of lists[] and data freshness, but adds valuable 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?
The description is a single dense paragraph with no filler. It front-loads the key controls, then gives return shape and a pointer to industry_peers. Could be split for readability, but 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 a read-only, idempotent tool with 5 params and no output schema, the description covers inputs, outputs, and a usage cross-reference. It leaves lists[] unspecified and _jq unexplained, but it is still enough for an agent to make an informed call on a simple listing feature.
Complex tools with many parameters or behaviors need more documentation. 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 80% and the param descriptions already provide market choices, indicator mappings, and sort_type values. The description mostly duplicates these and adds no new parameter-level meaning beyond an output format note. It does not explain _jq or clarify limit usage, so it does not surpass 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 specific verb and resource ('Industry ranking list') and differentiates itself from siblings by naming the market and indicator parameters. It also points to the downstream consumer (industry_peers), which makes its role distinct from related ranking/valuation 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 makes the usage context clear: it is a market- and indicator-filtered ranking list. It directly references the sibling industry_peers and says to pass counter_id to it, providing a concrete workflow. It does not explicitly state when to avoid it (e.g., for valuation use industry_valuation), so it misses a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
industry_valuationIndustry ValuationCRead-onlyIdempotentInspect
Get industry valuation comparison for peers.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true and idempotentHint=true, so the risk profile is covered. The description adds no behavioral detail beyond the annotation layer, but it does not contradict it either. For a read-only retrieval tool this is adequate, though nothing is said about output shape, data scope, or 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?
A single declarative sentence, front-loaded with the verb 'get'. No filler or redundancy. However, the name 'industry_valuation' is nearly identical to the description, which blunts the distinctiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place to explain what the comparison contains (metrics, periods, peer set). It supplies none of that. The agent knows it returns a comparison but not what shape it takes or how to interpret 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 coverage is 50% (only symbol is described). The description does not explain the role of the second parameter or add meaning to symbol beyond the schema's example. It says 'for peers' but doesn't specify how symbol drives the comparison.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb+resource: get industry valuation comparison for peers. However, it does not differentiate from very similar siblings (industry_peers, industry_valuation_dist, valuation_rank), leaving ambiguity about which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 related siblings like industry_peers or valuation_comparison. Implies use for peer valuation but no explicit context or exclusions.
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 DistributionARead-onlyIdempotentInspect
Get industry PE/PB/PS valuation distribution.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 the tool read-only, idempotent, open-world, and non-destructive, so the safety profile is covered. The description adds little behavioral detail beyond that: it does not explain what 'distribution' means in terms of returned data, how the symbol maps to an industry, or any pagination/filtering behavior. This is acceptable 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 sentence with no filler. It front-loads the core purpose and every word contributes meaning. For a tool of this simplicity, this is appropriately 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?
The tool is relatively simple and the annotations cover safety and idempotence, but there is no output schema and the description does not describe the return shape of the distribution or the role of the '_jq' parameter. An agent can infer the intended call, but some contextual gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'symbol' parameter is documented in the schema; '_jq' is left undocumented. The description does not clarify how 'symbol' selects an industry or what values are expected, nor does it explain '_jq'. Its mention of PE/PB/PS adds domain context but does not materially compensate for the partial 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 names a specific verb ('Get'), a precise resource ('industry PE/PB/PS valuation distribution'), and the metric set (PE/PB/PS). This is concrete enough to distinguish the tool from sibling tools such as industry_valuation, valuation_rank, and industry_peers, which target different resources or perspectives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool: whenever an industry-level valuation distribution across PE, PB, and PS is needed. However, it does not explicitly contrast it with alternatives like industry_valuation or valuation_rank, and provides no exclusion criteria or conditional routing guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the monthly granularity and 'distribution timeline' but does not disclose data range, pagination, or any other behavioral traits beyond the annotations. With annotations present, a 3 is appropriate—the description contributes modest context but leaves key behaviors unspecified.
Agents need to know what a tool does to the 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 front-loads the action and resource. It is efficient with no wasted words, though it is so brief that it misses opportunities to add helpful context. It earns a 4 for conciseness but loses a point for being under-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?
The tool is simple (one required parameter) and read-only, so a minimal description can be sufficient. However, the lack of an output schema and the absence of any detail about the returned data (e.g., time range, format, or whether it's an array) means an agent may not know what to expect. Given the low complexity, a 3 is reasonable, but it could be more complete by mentioning the response structure or available time filters.
Complex tools with many parameters or behaviors need more documentation. 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 only 50% (only 'symbol' is documented, and it already has an example). The description does not add any parameter meaning beyond the schema. Since coverage is low, the description should compensate for the undocumented '_jq' parameter and clarify the role of 'symbol', but it remains silent, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb ('Get') and resource ('monthly institutional rating distribution timeline'), which is specific enough to indicate a distinct data product. However, it does not explicitly differentiate itself from sibling tools like institution_rating_history or institution_rating_detail, so the distinction relies on the word 'distribution' rather than an explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 institution_rating_history, institution_rating, or institution_rating_detail. An agent has to infer that 'distribution timeline' differs from 'history' or 'detail' without any explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
institution_ratingInstitution RatingCRead-onlyIdempotentInspect
Get institution rating summary.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds almost no behavioral context beyond labeling the result a 'summary' — no mention of what fields are returned, whether multiple institutions can be queried, or any aggregation semantics. The bar for adding value beyond annotations is not met.
Agents need to know what a tool does to the 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 with zero filler. It states the operation and the resource in the most compact form possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and only a terse one-sentence description, the tool lacks needed context: what a rating summary contains, how it differs from institution_rating_history, and what the _jq parameter does. The simple interface lowers the burden, but the description is too thin to fully disambiguate from its many siblings.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is only 50% (symbol is described, _jq is not). The description adds nothing about either parameter, so it does not compensate for the uncovered _jq parameter. The agent is left to infer that symbol is required and what _jq means.
Input schemas describe structure but not intent. Descriptions should explain 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 ('institution rating summary'), making the tool's core purpose clear. It is distinguishable from the sibling institution_rating_history (summary vs. history), though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 like institution_rating_history or institution_rating_detail. The description is too terse for an agent to know which tool to pick in a given context.
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 DetailBRead-onlyIdempotentInspect
Get detailed historical institution ratings and target price history.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose that this is read-only, idempotent, open-world, and non-destructive, and the description does not contradict them. The description adds that the output covers historical ratings and target prices, but does not disclose potential quirks such as date ranges, pagination, or data availability limits, so the bar is only partially met.
Agents need to know what a tool does to the 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 immediately states the action and the resource. Every word earns its place, and there is no redundant 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?
The tool has a simple required parameter and rich annotations that establish safety and idempotency, so the description is mostly sufficient. However, it does not specify what time range, granularity, or format the 'historical' data covers, which could matter for agent expectations.
Complex tools with many parameters or behaviors need more documentation. 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 documents 'symbol' with an example, but '_jq' is left undocumented with no type description. The description does not clarify the '_jq' parameter or how the query parameters relate to the returned history, so it provides minimal semantic value 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 ('detailed historical institution ratings and target price history'), which is clear about what the tool returns. However, it does not explicitly distinguish itself from the sibling tool `institution_rating_history`, creating mild ambiguity about which one to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 information is given about when to use this tool versus alternatives like institution_rating_history, consensus, or broker_holding_detail. There is no mention of use cases, exclusions, or conditions that would help an agent decide between this and related tools.
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 HistoryCRead-onlyIdempotentInspect
Get institution rating history.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the name, such as what 'history' includes (e.g., time range, pagination, or rating changes). 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 short sentence, which is concise, but it is under-specified. It earns its place but does not add enough value to justify a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 large sibling set with several institution_rating tools, the description is too thin to let an agent confidently select this tool. There is no output schema, no mention of what the history contains, and no differentiation from institution_rating_detail. The description is minimally viable but leaves 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 description coverage is 50%: the 'symbol' parameter is documented with an example, but '_jq' has no description. The description does not add meaning beyond the schema, so it neither compensates for the undocumented '_jq' nor clarifies the expected output. Baseline 3 is appropriate because the schema covers the key required 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 states a clear verb and resource ('Get institution rating history'), but it is generic and does not distinguish this tool from closely related siblings like institution_rating, institution_rating_detail, and institution_rating_industry_rank. An agent would need to inspect schemas or infer differences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 institution_rating or institution_rating_detail. The description only states what it does, leaving the agent to guess which history granularity or context is intended.
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 RankBRead-onlyIdempotentInspect
Get peers ranked by institution analyst ratings in the same industry. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| 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, so the safety profile is clear. The description adds the pagination behavior ('Paginated'), which is useful, but it does not disclose details like default sort order, whether the result includes the input symbol itself, or how pagination interacts with the ranking. 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 sentence that front-loads the core purpose and ends with the pagination note. It is concise and free of filler, though it could be slightly more informative about the ranking basis without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 paginated list tool with annotations covering safety and idempotency, the description is mostly sufficient. However, it lacks details about the response shape (no output schema), the meaning of the ranking (e.g., whether higher ratings rank first), and how it differs from sibling tools like industry_peers or industry_rank. An agent could call it correctly but might not know what to expect in the response.
Complex tools with many parameters or behaviors need more documentation. 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 75%, with 'symbol' and pagination parameters documented in the schema. The description adds the concept of 'peers ranked by institution analyst ratings in the same industry', which clarifies the meaning of the symbol parameter, but it does not add detail beyond the schema for page/size. The _jq parameter remains undocumented in both schema and description, but the description's industry-ranking context helps interpret the overall call.
Input schemas describe structure but not intent. Descriptions should explain 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 ('peers ranked by institution analyst ratings in the same industry'), which clearly distinguishes it from generic ranking tools. It does not explicitly name sibling alternatives like industry_peers or industry_rank, but the phrasing is specific enough to convey the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context: it is for retrieving peer rankings based on institution analyst ratings within an industry. However, it does not explicitly state when to use this tool versus alternatives like industry_peers, industry_rank, or institution_rating_history, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intradayIntraday LineBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds minimal extra behavioral context—only the trade_sessions parameter meaning, which is already in the schema. It does not disclose rate limits, pagination, or the exact return structure.
Agents need to know what a tool does to the 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, focused sentence that front-loads the core purpose. It is efficient 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 read-only data tool with few parameters and no output schema, the description covers the basic functionality but lacks differentiation from sibling tools and does not describe the return format beyond 'price/volume data'. It is minimally adequate but not 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 description coverage is 67%, so the description partially compensates for the undocumented _jq parameter. It clarifies trade_sessions, but this information is duplicated from the schema. No additional meaning is added for symbol or _jq, leaving the undocumented parameter unaddressed.
Input schemas describe structure but not intent. Descriptions should explain 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 clear action ('Get intraday minute-by-minute price/volume data') with a specific resource and granularity. It distinguishes from broader historical tools like history_candlesticks_by_date by emphasizing 'intraday' and 'minute-by-minute', though it does not explicitly name sibling 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?
No guidance is given on when to use this tool versus alternatives such as candlesticks, quote, or history_candlesticks_by_date. The description only states what it does, not the context or conditions for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invest_relationInvestor RelationsCRead-onlyIdempotentInspect
Get investor relations events and announcements.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 read-only, idempotent, and non-destructive, but the description adds no further behavioral context—no mention of result ordering, data freshness, pagination, or whether the events are historical or upcoming. No contradiction exists, but the description adds nothing 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?
A single, front-loaded sentence 'Get investor relations events and announcements.' communicates the core purpose with zero filler. 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?
The description is too thin for a tool with an undocumented '_jq' parameter and no output schema. It does not specify what counts as an 'event' or 'announcement', whether the response is a list, or how it relates to similar resources like news or finance_calendar. An agent would be uncertain about the return format and filtering options.
Complex tools with many parameters or behaviors need more documentation. 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 50%: 'symbol' has a description, but '_jq' does not. The tool description does not mention either parameter or explain what '_jq' might control, so it fails to compensate for the undocumented 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 states a clear verb and resource: 'Get investor relations events and announcements.' It identifies the specific subject matter but does not explicitly differentiate from sibling tools like news, finance_calendar, or filings, so it earns a 4 rather than 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 provides no guidance on when to use this tool versus alternatives such as news, news_detail, finance_calendar, or corp_action. There are no usage contexts, exclusions, or pointers to sibling tools, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_calendarIPO CalendarCRead-onlyIdempotentInspect
Show the IPO calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | 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 the safety profile is clear. The description adds no behavioral context beyond the word 'Show'—no mention of what the calendar contains, how much data is returned, or any filtering 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?
The description is short and front-loaded, but it is nearly identical to the title and carries little informative value. It is technically concise, yet under-specified rather than efficiently complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no parameter explanation, and a large set of IPO-related siblings, the description is not sufficient for correct invocation. An agent cannot tell whether the tool returns upcoming IPO dates, historical listings, or something else, nor how to use _jq.
Complex tools with many parameters or behaviors need more documentation. 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 0% and the only parameter, _jq, is completely unexplained. The description does not compensate by describing what parameters mean or how they affect the output, leaving an agent unable to determine valid values for the single 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 a specific verb ('Show') and names a concrete resource ('the IPO calendar'), so an agent can tell it is a retrieval operation for a calendar. However, it does not differentiate itself from nearby siblings such as ipo_detail, ipo_listed, or finance_calendar, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about when to use this tool versus alternatives like ipo_listed or finance_calendar. The sentence only states the action; it does not mention context, exclusions, or preferred situations.
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 |
|---|---|---|---|
| _jq | No | ||
| market | No | Market: "HK" or "US" (default: inferred from symbol suffix) | |
| symbol | Yes | Security symbol, e.g. "6871.HK" or "ARM.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide a safety profile (read-only, idempotent, non-destructive), and the description adds no extra behavioral disclosures beyond that. It doesn't mention any peculiar behaviors such as market inference from symbol suffix, returned data characteristics, or limitations, so the description adds little 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, direct sentence with no unnecessary words. It is appropriately minimal and front-loaded, containing exactly the essential information in a clear order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, a large set of sibling IPO tools, and only vague parameter hints, the agent is left without enough context to know what data the tool returns or how to choose it over alternatives. The description fails to specify whether this is a general IPO reference or a transaction-specific detail, which is important given the sibling 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?
Schema coverage is 67%, with descriptions for 'symbol' and 'market' but not '_jq'. The description merely repeats 'for a symbol' without adding meaning about format, market inference, or the purpose of '_jq'. Thus it offers minimal semantic benefit beyond the structured 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 ('Show') and the resource ('IPO detail') for a symbol, so the core purpose is clear. However, it does not distinguish itself from sibling tools such as ipo_order_detail and ipo_listed, which are also IPO-related and described similarly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 its IPO-related siblings. It does not mention alternatives, exclusions, or prerequisites, leaving the agent unable to choose between ipo_detail and ipo_order_detail, ipo_subscriptions, or other tools without opening each schema.
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 |
|---|---|---|---|
| _jq | No | ||
| 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, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds specific scope (HK+US, recently listed) which gives agents useful context about the data returned, 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?
The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the key action and scope, with zero 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 list tool, the description conveys the basic purpose but lacks details about the response structure (no output schema) and leaves the _jq parameter unexplained. Given the absence of an output schema, more explicit return info would be helpful. The description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% because _jq has no description, while page and size do. The description adds no parameter information and does not compensate for the undocumented _jq parameter. Given the moderate coverage, the description fails to clarify the purpose of _jq, which is a gap.
Input schemas describe structure but not intent. Descriptions should explain 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: listing recently listed IPO stocks, with explicit market scope (HK+US). It uses a specific verb 'List' and a clear resource, distinguishing it from siblings like ipo_calendar or ipo_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 description implies usage for retrieving recent IPOs but does not explicitly mention alternatives or conditions for when to use this tool over other IPO-related tools like ipo_calendar or ipo_detail. No exclusions or contextual guidance are provided.
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 |
|---|---|---|---|
| _jq | No | ||
| order_id | Yes | IPO order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral traits such as response shape, error behavior, or data scope beyond what the annotations and name already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly worded sentence that front-loads the action and resource. 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 simple read-only lookup with one required parameter and rich annotations, the description is largely sufficient. It could be more explicit about what 'detailed information' includes, but the tool name and simple contract make the invocation path clear.
Complex tools with many parameters or behaviors need more documentation. 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 mentions order_id but adds little beyond the schema's own 'IPO order ID' description. The optional _jq parameter has no schema description and is not addressed in the description, leaving 50% of parameters effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Show' and a clear resource: detailed information for a specific IPO order, keyed by order_id. This clearly distinguishes it from siblings like ipo_orders (list) and order_detail (generic 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?
The phrase 'specific IPO order by order_id' implies the tool is for retrieving one order when you already have its ID, but there is no explicit guidance about when to prefer this over ipo_orders or order_detail. Usage context is implied rather than 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 |
|---|---|---|---|
| _jq | No | ||
| 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" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behaviorPi. The description adds one behavioral fact not in the annotations: the result spans both active and historical IPO orders. It does not disclose pagination behavior, result ordering, or whether the 'history' segment has time limits, but the core non-mutating nature is covered.
Agents need to know what a tool does to the 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 sentences lead with the verb and object ('List IPO orders'), then immediately provide the filtering options. No filler or duplication. The core purpose is front-loaded and the entire description is scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-style read-only tool, the description plus annotations cover safety and basic purpose. However, it lacks detail on pagination semantics, response shape, or how 'active+history' is delimited — an agent calling this tool cannot predict ordering or whether date ranges are needed. No output schema exists to fill 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?
Schema description coverage is 83%, meaning most parameters (page, symbol, market, status) already carry descriptive text. The description does not add new parameter semantics; it merely restates the filterable fields. The one parameter lacking a schema description (_jq) is not explained either.
Input schemas describe structure but not intent. Descriptions should explain 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 'List' with a clear resource, 'IPO orders', and defines scope as 'active+history'. This unambiguously distinguishes it from single-order lookup tools like ipo_order_detail and from order-execution tools like today_executions, even without naming 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 when to use it — whenever you need a listing of IPO orders, active or historical — and mentions the available filters (symbol, market, status). However, it gives no explicit guidance on when to prefer a sibling tool (e.g., ipo_order_detail for a single order, or ipo_profit_loss for P&L), so an agent must infer the boundaries from context.
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 |
|---|---|---|---|
| _jq | No | ||
| page | No | Page number (default: 1) | |
| size | No | Page size (default: 20) | |
| period | No | Period filter: "all", "ytd", "1y", "3y" (default: "all") |
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 read-only safety profile is covered. The description adds the 'summary and per-stock breakdown' output shape but reveals no deeper behavioral traits such as pagination behavior, aggregation basis, 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 front-loaded sentence followed by a compact enumeration of period values. There is no filler or redundant elaboration; every word contributes to identifying the tool's 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, no-required-parameter report tool, the core invocation details are present: what is returned and the valid period values. Minor gaps remain, such as what the profit/loss calculation is based on and the role of the _jq parameter, but the annotations and schema cover most operational 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?
With 75% schema description coverage, the schema already documents page, size, and period. The description's 'period: all/ytd/1y/3y' largely duplicates the schema's period description and adds no new semantic depth. The _jq parameter remains undocumented in both the schema and 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 uses a specific verb ('Show') and resource ('IPO profit/loss summary and per-stock breakdown'), making the tool's function unmistakable. Among IPO-related siblings like ipo_calendar, ipo_detail, and ipo_orders, this clearly identifies the profit/loss reporting focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, and no exclusions or sibling routing are provided. The description only states what it does, leaving all selection judgment to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipo_subscriptionsIPO SubscriptionsBRead-onlyIdempotentInspect
List IPO stocks in subscription/pre-filing stage (HK+US).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover safety. The description adds that the tool covers specific stages and markets, which is useful context. However, it doesn't mention other behavioral traits such as sorting, pagination, or the fact that it may include both upcoming and pre-filing stages, but given annotations, 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 a single sentence, highly concise, and front-loaded with the verb and resource. It includes essential scoping information (HK+US) 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?
The tool is simple with only one optional parameter and no output schema, so the description is fairly complete for a basic list tool. However, the undocumented `_jq` parameter and lack of differentiation among IPO siblings mean an agent might still need more context 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?
The schema has one parameter `_jq` with 0% schema description coverage. The description does not explain `_jq` at all, leaving the agent without guidance on how to format it. With low coverage and no compensation in the description, the parameter semantics are inadequate.
Input schemas describe structure but not intent. Descriptions should explain 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 IPO stocks in specific stages (subscription/pre-filing) and markets (HK+US). This is a distinct resource and verb, though it could more explicitly differentiate from siblings like ipo_calendar and ipo_listed, which are also IPO-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives like ipo_calendar or ipo_listed. It only mentions HK+US but no conditions or exclusions, leaving the agent to infer which IPO tool is appropriate.
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 |
|---|---|---|---|
| _jq | No | ||
| 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"`. |
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 does not need to restate safety. It adds useful context about historical observations, date ranges, and pagination, but it does not disclose ordering, chronological defaults, or how missing dates are handled.
Agents need to know what a tool does to the 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 three short sentences with no filler. It front-loads the core purpose, then adds the key relationship to macrodata_indicators, date format, and pagination. 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 simple required parameter and robust annotations, the description is close to sufficient. It covers the essential relationship with macrodata_indicators, date formatting, and pagination. It loses one point because there is no return-value detail or output schema, so an agent cannot fully anticipate the response structure.
Complex tools with many parameters or behaviors need more documentation. 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 83%, so most parameters are already documented. The description adds practical guidance by tying indicator_code to macrodata_indicators and characterizing offset/limit as pagination, but it does not deeply clarify the _jq parameter or reveal any additional semantic constraints 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 performs a read operation for a single macro-economic indicator and references the sibling macrodata_indicators tool for code lookup. It distinguishes itself from indicator listing and other financial-data tools, though it could be more explicit about not being the indicator metadata 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 gives concrete guidance: use indicator_code from macrodata_indicators, format dates as YYYY-MM-DD, and paginate with offset/limit. It stops short of explicitly naming alternatives or stating when not to use this tool, but the context is clear enough for an agent to route correctly.
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 |
|---|---|---|---|
| _jq | No | ||
| 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"). |
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 value by mentioning pagination (offset/limit) and the output's role (indicator_code) for macrodata, which enriches the behavioral picture 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 sentences with zero redundancy. The core purpose is first, then filtering options, then the critical relationship to macrodata, then pagination. 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 list tool with no output schema, the description covers all essential details: what it lists, how to filter, pagination, and how to use the result (with macrodata). Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (all params except _jq have descriptions). The description mentions filtering by keyword/country and pagination, which mirrors schema info without adding new semantics. Since the schema already documents these parameters well, a 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?
States a specific verb+resource ('List macro-economic indicators') and immediately distinguishes itself from its sibling macrodata by noting the returned indicator_code is meant to be used with macrodata. This makes the tool's role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use this tool: to discover indicator codes before calling macrodata. It also mentions filtering and pagination, providing context. It doesn't explicitly say when not to use it, but the tie to macrodata serves as a strong usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
margin_ratioMargin RatioCRead-onlyIdempotentInspect
Get margin ratio for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context such as rate limits, authentication needs, or return format. With annotations present, this is acceptable but not additive; the description doesn't 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, front-loaded sentence with no filler words. It is appropriately brief for a simple tool, though it could be enriched with context without losing conciseness. Efficiency is good, but it lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 should clarify what the margin ratio represents, how the result is returned, or any special considerations. The current description is minimal and leaves the agent to guess the semantics of the returned value, which is insufficient for a 2-parameter tool with incomplete 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 description coverage is only 50% (symbol is documented, _jq is not). The description does not mention any parameters or clarify what 'margin ratio' means in terms of the expected inputs. Since coverage is low, the description should compensate but fails to add any parameter-level detail 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 action ('Get') and the resource ('margin ratio') and scopes it to 'a symbol', which is specific enough for basic understanding. However, it does not differentiate from sibling tools like short_margin or margin-related queries, so an agent might not know exactly what 'margin ratio' entails without further context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 any prerequisites, related tools, or scenarios where this tool is preferred. An agent would have no sense of when to call this instead of, say, short_margin or quote.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_statusMarket StatusCRead-onlyIdempotentInspect
Get current market trading status for all markets.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | 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, covering the safety profile. The description adds the notions of 'current' and 'all markets' but does not explain what trading status includes (e.g., open/closed, holiday effects, timezone). This is minimal added value beyond annotations, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff, but it is under-specified. It conveys the basic purpose but omits necessary details. It is concise in length but not in 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?
For a tool with no output schema, a single undocumented parameter, and minimal behavioral disclosure, the description is insufficient. It does not explain what 'market trading status' returns, how to interpret it, or how the _jq parameter affects results. An agent would have to guess or probe the API.
Complex tools with many parameters or behaviors need more documentation. 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 one parameter, _jq, with no description in the schema (coverage 0%). The description does not mention the parameter at all, leaving its purpose and format entirely undocumented. This is a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb and resource: 'Get current market trading status for all markets.' It specifies scope (all markets) and implies current state. However, it does not differentiate from siblings like market_temperature or trading_session, so it is clear but not 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention related tools such as trading_session or market_temperature, nor conditions for selection. The agent must infer use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_temperatureMarket TemperatureBRead-onlyIdempotentInspect
Get current market sentiment temperature. market: HK/US/CN/SG.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| market | Yes | Market code: HK, US, CN, SG |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, open-world behavior. The description adds only 'current' semantics and the market universe; it does not describe output shape, freshness, or edge cases, but for this simple read tool annotations carry the 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?
Two short sentences with no filler and the core verb/object appear first. However, the second sentence duplicates schema content rather than adding 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?
Minimally sufficient to invoke with a market code, and the read-only annotations prevent risky assumptions. But an agent gets no help choosing between this and history_market_temperature, and the undocumented _jq parameter creates ambiguity for sophisticated calls.
Complex tools with many parameters or behaviors need more documentation. 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 50% and the description merely repeats the market values already in the schema. The _jq parameter is not explained anywhere, so the description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain 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 the current market sentiment temperature for specific markets. The word 'current' implicitly distinguishes it from the sibling history_market_temperature, but it does not explicitly name that sibling or clarify the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for when to use this tool versus alternatives like history_market_temperature or market_status. The market list is the start of an enum, not usage direction.
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 |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds the return structure and the 'latest' temporal scope, which is useful. It doesn't disclose pagination, sorting, or time range behavior, but the annotations carry the main safety burden.
Agents need to know what a tool does to the 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 states the action, the input, and the return shape. Every element earns its place, and the most important information (what it gets and for what) 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 list tool with annotations covering safety, the description is mostly complete. However, it doesn't mention pagination, sorting, or how 'latest' is defined, and it doesn't differentiate from news_detail/news_search. Given the large sibling set, a bit more context would help, but the core call is clear.
Complex tools with many parameters or behaviors need more documentation. 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 50%: the 'symbol' parameter is documented in the schema, but '_jq' is not. The description adds the return field list but doesn't explain '_jq' or provide additional parameter semantics beyond the schema. Baseline 3 is appropriate since the main parameter is documented.
Input schemas describe structure but not intent. Descriptions should explain 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 latest news articles for a symbol.' It specifies the resource (news articles) and the key input (symbol). It also lists the return fields, which helps distinguish it from news_detail and news_search siblings, though it doesn't explicitly 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 implies usage: call when you need latest news for a symbol. It doesn't explicitly state when to use this over news_detail or news_search, but the return shape and 'latest' wording provide some context. 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.
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`. | |
| _jq | 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 agent knows this is a safe read operation. The description adds the behavioral context that it returns 'full detail' for a single article, which is useful. However, it doesn't disclose anything about response format, pagination, or potential errors. With annotations covering the safety profile, a 3 is appropriate — the description adds some value but not rich 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?
One sentence, zero waste. The core action, resource, and ID source are all front-loaded. 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?
For a simple read-by-id tool with strong annotations (readOnly, idempotent, non-destructive) and a well-documented 'id' parameter, the description is nearly complete. The only gap is the undocumented '_jq' parameter, which the description doesn't address. But given the tool's simplicity and the annotations covering the safety profile, 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?
Schema description coverage is 50%: the 'id' parameter is well-documented in the schema (type, format, example, and source), but '_jq' has no description. The tool description adds the crucial context that the id comes from 'news/news_search', which reinforces the schema. However, it doesn't explain what '_jq' does or when to use it. With half the parameters undocumented, the description could have compensated but doesn't fully.
Input schemas describe structure but not intent. Descriptions should explain 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'), a specific resource ('one news article's full detail'), and the key identifier ('by id'). It also explicitly names the source of IDs ('from news/news_search'), which distinguishes it from the sibling tools 'news' and 'news_search' — the agent can tell this is the detail-fetch tool, not the list/search 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?
The description clearly indicates when to use this tool: when you have an article ID and need full detail. It references the sibling tools 'news' and 'news_search' as the source of IDs, which implies the workflow (search first, then get detail). It doesn't explicitly state when NOT to use it or name alternatives for the same purpose, but the context is clear enough for an agent to select it correctly.
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 |
|---|---|---|---|
| _jq | No | ||
| 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?
The description discloses the exact return structure (news_list with fields) and pagination mechanism (score+publish_at_timestamp+id cursors), which adds significant value beyond the annotations. Annotations already declare readOnly and idempotent, so the safety profile is covered; the description adds useful behavioral details about output format and 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 with no filler. The core purpose is front-loaded, and the pagination detail is included efficiently. Every word serves a purpose, and the structure is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides the return format and pagination, which is essential for correct invocation. It does not mention additional filters or sorting options, but for a keyword search tool it is reasonably complete. The lack of explicit differentiation from siblings slightly reduces completeness, but the core information is 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?
The schema already documents 'keyword' and 'limit' with descriptions, covering 67% of parameters. The description adds pagination details but does not explain the '_jq' parameter, which remains undocumented in both schema and description. This is a notable gap, so the description only partially compensates for missing parameter 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 it searches news articles by keyword and lists the return fields, making the core purpose unambiguous. However, it does not explicitly differentiate from sibling tools like 'news' or 'news_detail', which could cause confusion for an agent deciding 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 provides no guidance on when to use this tool versus alternatives such as 'news' or 'news_detail'. It mentions pagination but does not state any exclusions or context for choosing this tool over others, leaving the agent to infer the appropriate usage scenario.
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 |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive; the description adds a concrete behavioral contract by specifying UTC timezone and RFC3339 serialization. No hidden side effects or additional caveats are needed for such a simple clock operation.
Agents need to know what a tool does to the 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 zero filler: the first states the exact return value, the second states the use context. Information is front-loaded and 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?
For a simple zero-required-parameter utility with no output schema, the description provides everything needed: what is returned, in what format and timezone, and when to call it. The undocumented optional parameter is a minor gap but does not affect 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?
There is a single optional `_jq` parameter with no schema description and 0% coverage, and the description does not explain its purpose or whether it can be ignored. The tool remains callable without it, but the description adds no meaning for this 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?
Description uses a specific verb ('Get') with a clear resource ('current UTC time') and pins down the return format (RFC3339 string) with an example. This makes it unambiguous and distinct from date-related siblings like trading_days 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?
It explicitly states when to use the tool: before making date-based queries. No alternative tool performs the same clock function, so the lack of when-not guidance is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operatingOperating PerformanceBRead-onlyIdempotentInspect
Get company operating metrics (HK stocks only).
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds the HK-only scope, but no further behavioral detail such as error behavior, output shape, or limits; this is acceptable 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?
One front-loaded sentence with no wasted words. The action, resource, and scope are all in the opening phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 two-parameter lookup with rich annotations, this description is minimally sufficient. It is less complete in the context of many sibling financial tools because it leaves the meaning of 'operating metrics' and the optional '_jq' parameter unspecified.
Complex tools with many parameters or behaviors need more documentation. 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 documents 'symbol' with an example, and the description adds the HK-only constraint to it. However, '_jq' has no schema description and the description does not explain it, so the 50% coverage gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain 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 ('company operating metrics') and adds an important scope constraint ('HK stocks only'). It is clear about what the tool does, though it does not explicitly contrast it with sibling financial-report 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 only usage signal is the HK-stocks-only restriction. There is no guidance on when to prefer this tool over similar siblings such as financial_report_latest, financial_statement, or profit_analysis, nor any exclusion criteria.
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 |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the return format (`expiry_dates[]` as yyyy-mm-dd strings), but provides no additional behavioral context such as ordering, pagination, or rate limits. 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 two concise sentences, with purpose, return format, and usage context all front-loaded. There is no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description covers the purpose, the return format, and the natural companion tool. The main gap is the undocumented optional `_jq` parameter, but the core call path with `symbol` is fully specified.
Complex tools with many parameters or behaviors need more documentation. 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 only 50% because `_jq` is undocumented, and the description does not explain `_jq` at all. The description merely restates the symbol concept with an example, so it fails to compensate for the gap left by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get option chain expiry dates for a symbol' with a concrete example (AAPL.US). It also names the exact output shape (`expiry_dates[]` as yyyy-mm-dd strings), which clearly differentiates it from siblings like option_chain_info_by_date.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool with option_chain_info_by_date to get strikes and Greeks, establishing a clear workflow. It does not spell out negative cases or alternatives, but the complementary relationship is clear enough from the sibling names and the sentence itself.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 indicate a safe read-only, idempotent operation. The description adds meaningful behavioral transparency by disclosing the exact response shape, including strikePrices with call/put fields. This compensates for the absence of an output schema, though it does not mention edge cases like empty chains or invalid dates.
Agents need to know what a tool does to the 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: one clear action sentence followed immediately by the return structure. Every part contributes useful information, with no redundant 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?
For a simple read-only tool with strong annotations, the description covers the core purpose, required parameters, and return format. The only notable gap is the lack of a pointer to sibling tools like option_chain_expiry_date_list for discovering valid expiry 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?
The schema documents date and symbol with basic descriptions. The description adds value by clarifying that the date parameter refers to an 'expiry date', which is not stated in the schema property itself. However, the optional _jq parameter (67% schema coverage) receives no explanation in either the schema or the 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 uses a specific verb ('Get'), names the resource ('option chain'), and scopes it to 'an expiry date'. It also enumerates the returned strike/call/put structure, which makes it distinguishable from sibling option tools like option_quote or option_chain_expiry_date_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 usage context is implied: use this when you need an option chain for a specific expiry date. However, it does not explicitly mention when to prefer alternatives such as option_quote for a single quote or option_chain_expiry_date_list for discovering available expiry dates.
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). Symbols must be option contract symbols (e.g. "AAPL230317P160000.US"), NOT plain stock symbols — obtain valid ones from option_chain_info_by_date's call.symbol/put.symbol fields. Returns last_done, prev_close, open, high, low, volume, turnover, implied_volatility, delta, gamma, theta, vega, rho, open_interest per symbol. Greeks are normalized: theta is the per-day value (one day's time decay), vega is the price change per 1% change in implied volatility, and rho is the price change per 1% change in the risk-free interest rate.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbols | Yes | Option contract symbols, e.g. ["AAPL230317P160000.US"]. These are NOT plain stock symbols — get valid ones from `option_chain_info_by_date`'s per-strike `call.symbol`/`put.symbol` fields (after listing expiry dates with `option_chain_expiry_date_list`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context: the 500-symbol cap, the full list of returned fields, and the precise normalization of Greeks (theta per day, vega per 1% IV change, rho per 1% rate change). 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 front-loaded with the action and key constraint, and each sentence adds value: symbol-format warning, source tool, return fields, and Greek normalization. The field enumeration is long but justified because there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 compensates by listing return fields and explaining Greek units. It also covers input sourcing and the symbol cap. It could be marginally stronger by explicitly naming the alternative for plain stock quotes, but nothing essential is missing 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 required symbols parameter is richly described in both the schema and the description, including format and source. However, schema description coverage is 50% and the optional _jq parameter is left undocumented in both the schema and the description. The description adds the max-count constraint but does not fully compensate for the missing parameter 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 uses a specific verb and resource ('Get option quotes'), states the max symbol count, and clearly distinguishes this from plain stock quotes by requiring option contract symbols. It also names the sibling tool that provides the valid symbol values, so an agent can disambiguate 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?
Explicitly instructs that symbols must be option contract symbols, not plain stock symbols, and directs the agent to option_chain_info_by_date's call.symbol/put.symbol fields. The 'NOT plain stock symbols' phrase implies when not to use this tool, though it does not explicitly name the stock-quote alternative.
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 |
|---|---|---|---|
| _jq | No | ||
| 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?
The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful context: it specifies 'real-time' data and enumerates the return fields, including 'top active contracts', which is not evident from annotations. This enhances transparency beyond the structured metadata.
Agents need to know what a tool does to the 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, focused sentence that immediately states the purpose, specifies the scope (US stock), and lists the return payload. There is zero fluff, and the key information is front-loaded. It is appropriately concise 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?
For a tool with one required parameter and no output schema, the description covers the essential details: what it returns and the market scope. It omits explanation of the optional '_jq' parameter and does not mention potential rate limits or data delays, but given the simplicity and the annotations, these are minor gaps. The tool is largely complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% – only the 'symbol' parameter is documented in the schema, and the description adds no new information about it (it merely repeats 'US stock'). The '_jq' parameter is completely undocumented in both the schema and the description, and the description does not compensate for this gap. Since coverage is moderate, the description should have explained _jq or clarified its role, but it does not.
Input schemas describe structure but not intent. Descriptions should explain 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 real-time option call/put volume stats for a US stock, names the specific return fields ({call_volume, put_volume, put_call_ratio, call_oi, put_oi}) and mentions 'top active contracts'. This distinguishes it from sibling tools like option_volume_daily (daily data) and option_quote (price quotes), and the explicit list of outputs leaves no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it is for US stocks and real-time data, providing some context. However, it does not explicitly mention when to use this tool versus alternatives like option_volume_daily (for historical/daily volume) or option_quote (for quotes). There are no exclusions or alternative routing hints, so the agent must infer usage based on the word 'real-time'.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 mark the tool as read-only, non-destructive, and idempotent, and the description adds no contradicting behavior. The description names the output fields, but does not disclose details such as market-data availability, symbol normalization, or any limits beyond the count parameter. 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 concise, begins with an active verb, and lists the exact returned fields for the agent. It front-loads the core purpose and provides the return shape in a compact single sentence, making it quick 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?
For a simple read tool with rich annotationsessed, the description covers what the tool returns and the market scope. It lacks explicit mention of date range behavior or default count, but the schema covers the count parameter, and the annotations cover safety, so overall context is 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 67%: the 'symbol' and 'count' parameters have descriptions in the schema, while '_jq' is left unexplained. The tool description reinforces that the symbol is a US stock but adds no further parameter semantics beyond the schema, so the agent must rely on names and the existing count 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 uses a specific verb (
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 identifies the tool's context: it retrieves daily historical option stats for a US stock, which implies the appropriate time frame and market scope. It does not explicitly name alternatives or exclusion criteria, but the daily-historical scope is sufficiently clear for an agent to choose it over real-time or non-option tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_detailOrder DetailARead-onlyIdempotentInspect
Get detailed information about a specific order. To look up such a leg by its own ID instead, pass it as order_id with is_attached=true: the response is then that leg, with charge_detail null.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| order_id | Yes | Order ID to look up. A parent order ID, or (with is_attached=true) the ID of an attached take-profit / stop-loss leg. | |
| is_attached | No | Set to true when order_id is the ID of an attached take-profit / stop-loss leg rather than a parent order. The response is then that leg itself, with charge_detail null. Omit (or false) for parent orders. Has no effect for US accounts, which are served by the US order endpoint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds a meaningful behavioral trait beyond that: when an attached leg is requested via is_attached=true, the response is that leg itself with charge_detail null. This is useful runtime behavior not captured by annotations or the tool name.
Agents need to know what a tool does to the 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 action is front-loaded, and the attached-leg conditional is stated compactly in the second sentence. Every clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-required-parameter lookup, the description plus schema and annotations are nearly complete. It handles the main parent/leg nuance and the no-output-schema gap is acceptable given 'detailed information' is the stated purpose. Minor improvements would be introducing the 'attached take-profit/stop-loss leg' concept before using 'such a leg' and moving the US-account exception from the schema into the main description.
Complex tools with many parameters or behaviors need more documentation. 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 67%, so most parameters are already documented in the schema. The description adds the cross-parameter relationship between order_id and is_attached, which helps, but it does not clarify the undocumented _jq parameter or provide further format constraints. This is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain 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 first sentence states a clear verb and resource: 'Get detailed information about a specific order.' The description also clarifies a conditional variant for attached legs, which enriches the purpose. It does not explicitly differentiate from sibling tools like ipo_order_detail or today_orders, but the by-ID lookup intent 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 gives concrete direction on when to use the default parent-order path versus the attached-leg path with is_attached=true, and states the resulting difference in the response. It stops short of naming alternative tools or explicit when-not-to-use cases, but the provided routing guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
participantsMarket ParticipantsBRead-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 |
|---|---|---|---|
| _jq | 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. The description adds the return structure (participants with broker_ids and name fields), which is useful, and mentions its relevance to broker queue data. It doesn't contradict annotations, though it doesn't cover rate limits, caching, 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 two short sentences, front-loads the action and resource, and packs the return shape into the first sentence. Every sentence earns its place with no 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?
The description is sufficient for a simple read-only lookup tool: it names the resource, describes the return structure, and hints at downstream use with broker IDs. However, it doesn't explain the _jq parameter, which is the only parameter in the schema, so completeness is slightly reduced.
Complex tools with many parameters or behaviors need more documentation. 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 one parameter, _jq, with 0% schema coverage and no mention in the description. The description doesn't explain what _jq does or whether it's required. However, the description implies calling with no parameters returns all participants, so an agent could reasonably invoke it without arguments.
Input schemas describe structure but not intent. Descriptions should explain 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 action and target: 'Get HK market participant broker information.' The return shape is named explicitly. However, it does not distinguish itself from the sibling 'brokers' tool, which could be confused with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for when to use this tool versus the sibling tools 'brokers', 'broker_holding', or 'broker_holding_detail'. The only hint is that broker_ids can be used for broker queue data, but there is no explicit when-to-use or 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.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 mark this as a safe read and idempotent operation. The description adds useful behavioral detail: the date range is optional, but if provided both boundaries are required arare enforced, and providing only one returns empty results. This goes beyond the structured annotations without contradicting 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?
A single, tight sentence that front-loads the tool's purpose and then immediately conveys the key invocation constraint with no filler 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 read-only summary tool with no output schema, the description conveys purpose, optional parameters, and an important pairing rule. It does not describe the response format or default date range when omitted, but those are not critical for selecting and invoking the 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 covers 2 of 3 properties with descriptions; the description adds the critical constraint that start and end must be used together belavorably, and clarifies the YYYY-MM-DD format. It does not explain the purpose of the undocumented _jq parameter, which limits full semantic 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 the specific verb-object phrase
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear parameter usage guidance (optional date range, both must be provided together, empty results otherwise), but it does not explicitly contrast with sibling tools like profit_analysis_detail or profit_analysis_realized, so tool-selection context is missing.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 indicate readOnlyHint=true and idempotentHint=true, and the description's 'Get' wording aligns with that. It adds useful behavioral detail beyond the annotations: passing only one of start/end returns empty results. This clarifies a non-obvious edge case without contradicting the structured metadata.
Agents need to know what a tool does to the 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 exceptionally concise: two sentences, front-loaded purpose, and necessary constraints. Every clause carries relevant information without 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 read-only tool with one required parameter, the description covers the essential invocation details: symbol, optional date format, and the pairing requirement that governs valid calls. The undocumented _jq parameter is a minor omission, but the tool remains correctly invocable with the given information.
Complex tools with many parameters or behaviors need more documentation. 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 75%, so most parameters are already documented. The description essentially reiterates the start/end format and pairing rule already present in the schema, without adding new meaning for parameters like _jq. This provides some value but mainly re-encodes existing schema 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 states a specific verb and resource: 'Get detailed profit and loss analysis for a specific symbol.' This is clear and unambiguous, but it does not explicitly distinguish the tool from sibling tools such as profit_analysis or profit_analysis_realized, leaving the potential for confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 parameter usage constraints ('start/end: optional date range in yyyy-mm-dd format' and 'Both must be provided together'), which is helpful. However, it does not explain when to choose this tool over related alternatives, such as profit_analysis or profit_analysis_realized, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 AP accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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. |
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 region-specific behavior (US-only, error for AP accounts) and the category breakdown, which are not captured by the annotations. This provides useful context beyond the structured hints and contains 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 two concise sentences, front-loaded with the core purpose and followed by a critical usage constraint. Every sentence earns its place; there is 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 read-only tool with three optional parameters, the description covers the core action, region restriction, and error behavior. However, it introduces 'period' without a corresponding parameter, and does not describe the output format or how to specify the period (possibly via _jq). While annotations cover safety, this gap in period handling could confuse an agent trying to invoke 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 coverage is 67% (category and currency have descriptions, _jq does not). The description adds meaning to the category parameter by listing the possible values (stock/option/crypto), which is helpful. However, it mentions 'period' as a breakdown dimension but no period parameter exists in the schema, creating confusion. It does not clarify _jq or the currency default (though schema covers currency). The description adds some value but leaves a notable mismatch.
Input schemas describe structure but not intent. Descriptions should explain 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 'realized P&L for a US account', and the breakdown dimensions (category and period). It distinguishes itself from sibling tools like profit_analysis by specifying 'realized' and 'US accounts only', which narrows its scope and purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 notes 'US accounts only' and the error behavior for AP accounts ('errors with DcRegionRestricted'), giving a clear condition for when to use this tool. However, it does not explicitly name alternative tools (e.g., profit_analysis for unrealized or non-US), leaving the differentiation implicit rather than naming a sibling, which would have been stronger guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 cover read-only and idempotent behavior. The description adds that the script executes server-side and returns computed values as JSON, which clarifies side effects and output format. It does not overpromise or omit obvious behavioral caveats.
Agents need to know what a tool does to the 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 with no filler. The core action and return type are front-loaded, with parameter details following. No repeated schema information except the useful period list and input formatting example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 executes user code (a potentially complex operation), the description covers the essential call contract: input data, script execution, return format, supported periods, and input parameter passing. It omits details like error behavior or sandboxing, but annotations already cover safety and the description 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 coverage is high (86%), so the baseline is 3. The description adds value by explaining the input array order mirrors input.*() calls and enumerating the valid period values, which is not fully evident from the schema alone. The default period is also restated in prose.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Run a quant indicator script') against a specific resource ('historical K-line data') and the output format (JSON). It is immediately distinguishable from sibling tools like candlesticks or calc_indexes because it is the only tool that executes 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?
No guidance on when to prefer this tool over alternatives such as candlesticks (raw K-line data) or calc_indexes (precomputed indicators). It does not state exclusions, prerequisites, or typical use cases, leaving the agent to infer when script execution is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoteQuoteBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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 cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the description's added value is the return-field contract, which is helpful. However, it does not disclose behavioral traits such as real-time vs delayed data, behavior for invalid symbols, or market-closed behavior. No contradiction 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?
A single, front-loaded sentence states the purpose and then lists the return fields in a compact, scannable way. Every element earns its place, with no filler or repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 field list compensates for the missing output schema, but the description lacks context for choosing this tool among several similar price-related siblings, does not mention symbol count limits or format beyond the schema example, and omits edge-case behavior. It is adequate for a simple quote tool but leaves clear 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 only 50%; the 'symbols' parameter has a clear example, but ' _jq ' is completely undocumented. The description reinforces that results are per symbol but adds no meaning for the undocumented parameter and no additional param semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain 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'), names the resource ('latest price quotes'), and enumerates the exact fields returned per symbol (last_done, prev_close, open, high, low, etc.). This makes the tool's function clear, though it does not explicitly differentiate it from sibling price-related tools like 'now', 'intraday', 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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or alternative tools such as 'intraday', 'candlesticks', or 'option_quote', leaving the agent to infer the best choice from the name alone.
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 |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering safety. The description adds a behavioral detail: accepting a 'second_tags' key to filter results, which is useful. No contradictions with annotations, and the description does not repeat them, adding 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 compact sentence, front-loading the main purpose before the parameter hint. No filler words, and the key usage hint is included. It is appropriately sized for the tool's 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 description covers the main purpose and one usage hint, but given the lack of a schema with clear parameter definitions and no output schema, it leaves ambiguity about what the response contains and how exactly to pass the second_tags key. The tool is simple, but more could be said about the expected input format.
Complex tools with many parameters or behaviors need more documentation. 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 one parameter (_jq) with 0% coverageciation, so the description must clarify its meaning. The mention of 'second_tags' likely corresponds to _jq, providing context that the schema lacks. This compensates for the coverage gap, though it could be more explicit about the parameter name.
Input schemas describe structure but not intent. Descriptions should explain 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 rank tab category configurations for the popularity leaderboard, using a specific verb 'Get'. It references a sibling (rank_list) indirectly, which distinguishes it from ranking tools. However, the purpose could be more explicit about what 'rank tab categories' are.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a second_tags key, but it does not explicitly state when to use this tool versus alternatives. It references rank_list but does not explain the relationship or when to choose one over the other. The guidance is minimal and relies on the agent to infer context.
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 |
|---|---|---|---|
| _jq | No | ||
| 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) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, openWorld, idempotent, and non-destructive hints. The description adds the 'ib_' prefix auto-stripping/adding behavior and market inference logic, which is useful, but no further side effects or rate limits are mentioned.
Agents need to know what a tool does to the 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 concise two-sentence overview with key examples, but it does repeat the default size (schema also says default 20). It could be slightly tighter but remains efficient and front-loaded with 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?
For a read-only list tool with a missing output schema, the description covers most operational details: how to find keys, how market is derived, how to set size. It doesn't specify response format or pagination, but given the tool is straightforward and read-only, this is 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 80%, so baseline 3. The description highlights the key parameter's semantics (using examples and the ib_ prefix handling) and briefly mentions market with examples, but doesn't add significant meaning beyond schema for size, market, need_article.
Input schemas describe structure but not intent. Descriptions should explain 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 a ranked stock list based on a leaderboard tab key, with examples. It distinguishes from rank_categories and other list tools by explaining the relationship to rank_categories and the key format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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), how market is inferred from key suffix, and how to override. It sets context for when to use this tool 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. Attached take-profit/stop-loss legs are changed here too: attached_order_type with the new attached_profit_taker_price / attached_stop_loss_price adds or reprices a leg, attached_profit_taker_id / attached_stop_loss_id target an existing leg, and attached_cancel_all=true removes every leg while leaving the order in place.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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) | |
| attached_main_id | No | ID of the parent order that owns the attached leg, when the leg is modified on its own rather than through its parent. | |
| trailing_percent | No | New trailing percent as decimal e.g. 0.05 = 5% (for TSLPPCT) | |
| attached_quantity | No | New quantity for the attached leg. | |
| attached_cancel_all | No | Set to true to cancel every attached take-profit / stop-loss leg of this order, leaving the order itself in place. | |
| attached_order_type | No | Attached leg to add or update: "PROFIT_TAKER", "STOP_LOSS" or "BRACKET". Required unless the only attached change is attached_cancel_all. | |
| attached_expire_time | No | New expiry for the attached leg as a unix timestamp in seconds. Required when attached_time_in_force is GTD. | |
| attached_outside_rth | No | New outside-RTH setting for the triggered leg: "RTH_ONLY" / "ANY_TIME" / "OVERNIGHT". | |
| attached_market_price | No | Reference market price for the attached leg. | |
| attached_stop_loss_id | No | ID of the existing stop-loss leg to update (from order_detail's attached_orders[]). Omit to add a new leg. | |
| attached_time_in_force | No | New time-in-force for the attached leg: "Day" / "GTC" / "GTD". | |
| attached_profit_taker_id | No | ID of the existing take-profit leg to update (from order_detail's attached_orders[]). Omit to add a new leg. | |
| attached_stop_loss_price | No | New stop-loss trigger price. | |
| attached_profit_taker_price | No | New take-profit trigger price. | |
| attached_activate_order_type | No | New order type for the triggered leg, e.g. "LO" or "MO". | |
| attached_stop_loss_submit_price | No | New limit price for the stop-loss leg. | |
| attached_profit_taker_submit_price | No | New limit price for the take-profit leg. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations declaring readOnlyHint=false and destructiveHint=true, the description adds crucial behavioral nuance: it is a DRY RUN unless a confirmation_code is passed, the code is single-use and expires in 10 minutes, and attached take-profit/stop-loss legs are modified here too. It also warns never to quote the code on the agent's own initiative. This goes well 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 long, but every sentence carries critical safety protocol or scope information. It front-loads the core purpose in the first sentence and then proceeds to the safety-critical two-step confirmation and attached-leg behavior. While it's dense, no word is wasted; it maintains structure with sections in a fluid prose 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?
For a 24-parameter tool with no output schema, the description is comprehensive: it covers the action, restrictions, the mandatory confirmation flow, handling of attached orders, and even the success return message. It perfectly complements the highly descriptive input schema, leaving little ambiguity about behavior, sequence, 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 96%, so the schema already documents each parameter precisely. The description adds meaning by clarifying the execution model (dry-run vs. execute via the `execute` parameter) and the semantics of attached legs (e.g., attached_order_type plus attached_profit_taker_price adds a leg, attached_cancel_all removes legs). This goes beyond the raw schema descriptions and substantially helps an agent set the right 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 states a specific verb and resource ('Modify an open order's quantity, price, trigger_price, or trailing params') and immediately distinguishes it from siblings like submit_order and cancel_order by limiting to open/pending orders. It names the exact fields and attached-leg behaviors, so an agent can tell this is the order-editing tool without opening sibling definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly prescribes the mandatory two-step dry-run/execute protocol and states the prerequisite that only open/pending orders can be modified. It doesn't explicitly name alternatives (e.g., 'use cancel_order for cancellations'), but the context and sibling list make the appropriate use obvious, and the when-not (closed/overflow orders) condition is implicit in 'only open/pending orders.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screener_indicatorsScreener IndicatorsBRead-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 |
|---|---|---|---|
| _jq | No | ||
| symbol | No | Optional security symbol to filter indicators for a specific stock, e.g. "AAPL.US" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful behavioral detail by revealing that indicator keys come with units, default value ranges, and a tech_values field with option mappings, which helps the agent anticipate response shape.
Agents need to know what a tool does to the 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: the first states the primary action and result clearly, and the second adds a concrete example of the tech_values format. No words are wasted, and the most important information 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, parameterless-by-default metadata tool with rich annotations, the description covers the core return semantics well. Gaps include no mention of the optional symbol filter's effect and an unexplained _jq parameter, but these are minor for a tool that can be invoked with no arguments.
Complex tools with many parameters or behaviors need more documentation. 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 does not mention the optional symbol parameter at all; the schema documents symbol, so that part is covered. However, the _jq parameter has no description in the schema and the description does not compensate, leaving its purpose unexplained. With 50% schema coverage, the description should have provided additional parameter context.
Input schemas describe structure but not intent. Descriptions should explain 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 verb ('Get') and resource ('all available screener indicator keys') plus the output scope ('units and default value ranges'). It does not explicitly distinguish itself from sibling screener tools like screener_search or screener_strategy, but the resource is specific enough that the purpose 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?
There is no explicit guidance on when to use this tool versus alternatives, nor any mention of when not to use it. The description implies the usage context through its wording, but an agent must infer that this is for listing indicator metadata rather than running a screener.
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 |
|---|---|---|---|
| _jq | No | ||
| market | No | Market filter: "US" | "HK" | "CN" | "SG" (default: "US") |
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 covered. The description adds the market default and downstream behavior but does not mention pagination or output shape; for a read-only list that's acceptable, 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?
Two short sentences with the core action and market constraint first, and the downstream usage second. No filler or redundant elaborations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich annotations and no output schema, the description is complete: it names the market filter, defaults, and how to consume the returned strategy id. The cross-references to screener_search and screener_strategy give the agent enough to continue the 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?
The market parameter's allowed values and default are stated, but that duplicates the schema description rather than adding new meaning. The _jq parameter is completely undocumented in both the schema and the description, so the lowest-coverage parameter is not compensated for.
Input schemas describe structure but not intent. Descriptions should explain 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 ('List') and resource ('platform-preset screener strategies'), which immediately distinguishes it from the sibling screener_user_strategies. It also names the downstream tools that consume the returned id (screener_search, screener_strategy), removing ambiguity about what the output is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how the output is used: pass the id to screener_search with strategy_id, or to screener_strategy to inspect filter conditions. It does not explicitly contrast with screener_user_strategies or state when not to use the tool, but 'platform-preset' plus the downstream pointers give clear contextual guidance.
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 |
|---|---|---|---|
| _jq | No | ||
| 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"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: Mode A auto-fetches the strategy and builds filters, Mode B passes conditions directly to the API, and market is overridden in Mode A. It doesn't describe pagination behavior or result shape, but with no output schema and read-only annotations, 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 compact and front-loaded with the core purpose and market scope. The Mode A/B distinction is stated early. It could be slightly more structured, but every sentence carries meaningful information and there is no 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?
For a read-only screening tool with 9 parameters and no output schema, the description plus rich schema covers the essential usage: modes, market requirements, condition key formats, and technical indicator schemas. It doesn't describe the return value shape, but the schema's parameter documentation is thorough and the tool is read-only, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. 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 89%, so the schema already documents most parameters well. The description adds value by clarifying the Mode A/Mode B split, the filter_ prefix auto-adding behavior, and the technical indicator JSON formats. It also explains that sort_by_key defaults to the first condition key. This goes beyond the schema's individual 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 states a clear verb and resource: 'Screen stocks' with market options US|HK|CN|SG. It distinguishes two modes (Mode A and Mode B) and references sibling tools screener_recommend_strategies and screener_indicators. However, it doesn't explicitly contrast with other screener siblings like screener_strategy or screener_user_strategies, so differentiation is partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit when-to-use guidance: Mode B requires market, Mode A uses strategy_id from screener_recommend_strategies and auto-runs the saved strategy. It also says to call screener_indicators for technical indicator schema. It doesn't explicitly say when NOT to use this tool versus other screener tools, but the mode-based guidance is strong.
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 | |
| _jq | 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 the safety profile (read-only, idempotent) is well-covered. The description adds minimal behavioral context: it says 'inspect' which aligns with readOnlyHint. There are no contradictions, but the description doesn't add much beyond annotations; it doesn't disclose response format or any side effects, which is acceptable given the read-only nature, but a 3 is appropriate because it does align with the annotations without adding substantial nuance.
Agents need to know what a tool does to the 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 statement that includes both purpose and a routing hint to the sibling tool. It is efficient with no wasted words. It could have added a bit more on when-not to use, but given its brevity, the structure is strong, though not perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 straightforward read-only inspection tool with no output schema and only one required parameter that is documented in the schema, the description provides enough context: the purpose, the precondition (before running), and the alternative for execution. The lack of output schema means the description doesn't need to detail return values Mendelian, but it could have hinted at what 'filter conditions' might includeasiak as a courtesy. Overall, the tool is simple enough that the description is 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-description coverage is 50% (id is documented with a source, while _jq is not), so the schema partially covers parameter meanings. The description does not explicitly explain the id parameter, but the schema's 'Strategy ID' description is adequate. Since coverage is exactly 50%, the description could compensate for the undocumented _jq, but it doesn't, so it relies on the schema for id and leaves _jq undefined; this is a slight gap but not a major failure, so a 3 is fair.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb ('Inspecting') and resource ('a screener strategy's filter conditions'), which is specific and distinct from the sibling screener_search (which executes). It clearly identifies what this tool does, and the agent can differentiate it from its siblings by the action indicated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'before running it' and says to use screener_search to execute the strategy, which provides clear context for when to use this tool versus the alternative. However, it does not state explicit when-not conditions or mention any other alternatives, but the context is sufficient to guide selection.
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 |
|---|---|---|---|
| _jq | No | ||
| market | No | Market filter: "US" | "HK" | "CN" | "SG" (default: "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, covering the safety profile. The description adds context that this operates on the current user's saved strategies and clarifies the market filtering and default. No contradiction with annotations, and it enriches understanding beyond the structured hints.
Agents need to know what a tool does to the 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 unnecessary detail. All information is actionable and front-loaded: the purpose, market default, and downstream usage. No fluff or repetition of obvious schema 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 list tool with rich annotations, the description is fairly complete. It tells the agent what the tool returns (saved strategies) and how to proceed with the results (pass id to other tools). It doesn't describe the output structure or pagination, but given the simplicity and that these are likely standard, it's adequate. A slightly more explicit note about the return shape could push it to 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% since _jq lacks a description while market has one. The description does mention market with its allowed values and default, but it completely omits any explanation of _jq. Since coverage is low, the description should compensate by explaining _jq's purpose, but it doesn't, leaving agents uncertain about that 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 'List the current user's saved screener strategies' – a specific verb and resource. It also differentiates from siblings by noting the current-user scope and providing guidance on how to use the returned id with screener_search or screener_strategy, making the tool's role 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?
It explicitly tells the agent what to do with the results: 'Pass id to screener_search strategy_id to run, or screener_strategy to inspect conditions.' This provides a clear workflow and implies this tool is for listing, while those tools execute/inspect. However, it doesn't explicitly say when not to use this tool (e.g., if you already know the strategy id and want to run it directly, you might skip listing), so it's slightly incomplete.
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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds semantic context about the relationship between facts and key_fact_id, but does not disclose return format, pagination, or any edge behaviors. This is acceptable given annotations carry the burden, though it adds limited behavioral detail.
Agents need to know what a tool does to the 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 filler. The main purpose is front-loaded, and the second sentence adds valuable context 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 list tool with 5 parameters and no output schema, the description explains the core concept, filtering, and relationship to signals. It does not describe the output shape or error behavior, but these are not critical given the annotations and schema. It is nearly complete for 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 description coverage is 80%, so most parameters are already documented. The description's mention of 'filtered by time range and count' summarizes the begin_time, end_time, and limit parameters but adds no new syntax or format details beyond what the schema provides. Baseline 3 is appropriate when 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 action ('List') and the resource ('a security's fact (catalyst) events'), and enriches it with concrete examples (anomaly detections, factor readings, data sources, natural-language summaries). The extra sentence about facts being what strategies react to adds context that helps distinguish this from generic data-fetching tools, though it doesn't name specific 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?
No guidance is given on when to use this tool versus alternatives like 'anomaly' or 'signals'. It describes the filtering capability but does not state conditions that would make it the preferred choice or mention any exclusions.
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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds defaults for page/count/category but those are also in the schema. It doesn't disclose potential errors, rate limits, or return structure beyond what annotations imply. With annotations present, the bar is lower, but it still adds little beyond 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 a single sentence followed by a parameter list, with the core purpose front-loaded. It's concise and efficient, though slightly dense with parameter details. No wasted words, but it could be more readable with line breaks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations covering safety and no output schema, the description explains the inputs and defaults adequately. It doesn't specify the return format (e.g., fields of each security), but the name implies a list. Given the simplicity and coverage from schema and annotations, it's reasonably 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 description coverage is 80%, so most parameters are already described. The description reiterates market values and defaults, but adds no new semantics beyond the schema. It clarifies the default for category but that's already in 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?
States a clear verb ('Get') and resource ('security list') with a specific market scope. It lists supported markets, distinguishing it from generic data tools, though it doesn't explicitly name an alternative sibling. It's clear enough for an agent to understand the primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 parameters but gives no explicit guidance on when to use this tool versus alternatives like static_info or security_facts. The context is implied by the name and parameters, but there is no explicit 'use this when' or exclusions. For a list tool with many siblings, this is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
short_marginShort MarginCRead-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 |
|---|---|---|---|
| _jq | No |
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 the return fields and the scope ('current account'), which is useful but not extensive. It does not contradict annotations, so a mid-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, clear sentence with no fluff. It front-loads the action and includes the key return fields. However, it lacks any structural elements like examples or parameter explanations, so it is concise but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one undocumented parameter and no output schema, the description is insufficient. It fails to explain the '_jq' parameter, which is essential for invocation. While the return fields are listed, the lack of parameter documentation and any usage context makes it incomplete for correct 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 sole parameter '_jq' has zero schema description coverage, and the description does not explain its purpose or format. Since the schema provides no hints and the description is silent, the agent has no way to correctly supply this parameter. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain 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 short margin deposit details for the current account, listing specific return fields (margin_amount, margin_rate, etc.). It is distinguishable from siblings like short_positions and short_trades, though it does not explicitly differentiate itself, so it loses a point for not 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 provides no guidance on when to use this tool versus the closely related short_positions or short_trades. It does not mention any exclusions or conditions. Without this, an agent may struggle to choose the correct tool among siblings.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 cover read-only, idempotent, and non-destructive behavior. The description adds value by disclosing data-source cadence (FINRA bi-weekly, HKEX daily), market-specific output fields, and the response shape. It does not restate or contradict the annotation safe 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?
Every sentence in the description carries functional weight: purpose, market scope, count, unified output, US-only and HK-only fields, and source frequency. The core verb and resource are front-loaded, with dense but parseable detail afterward. There is 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?
Without an output schema, the description does a strong job of conveying the complete response shape: unified fields and market-specific ones, timestamp format, rate example, and source behavior. Minor omissions like default sort order or pagination do not cripple an agent's ability to interpret 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 schema already documents symbol and count with the same constraints. The description repeats count range and the market-inference rule but does not explain the '_jq' parameter or add new parameter-specific meaning. With schema coverage at 67%, the description neither significantly condenses nor compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain 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 short interest history (open short positions)') and scopes the markets to HK or US. The tool name and content distinguish it from sibling short_margin and short_trades, but the description does not explicitly differentiate itself from those alternatives, so it misses the top bar for explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: market inference from the suffix, count limits, and both data-source frequencies. It does not give explicit when-not-to-use guidance or name sibling tools as alternatives, so it is 'clear context without exclusions' rather than complete routing.
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 |
|---|---|---|---|
| _jq | No | ||
| 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) |
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 context by naming the underlying data sources (FINRA/NASDAQ, HKEX) and pagination defaults, but does not disclose response format, rate limits, or error conditions. This adds some value beyond annotations without being 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 compact sentence that front-loads the core purpose and packs parameter details, market inference, and sources without waste. Every clause contributes essential 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?
Despite covering purpose, markets, sources, and pagination, the description contradicts the schema by stating last_timestamp can be omitted for latest while the schema marks it required. This inconsistency can confuse an agent. Additionally, with no output schema, it omits any description of the return format, leaving some uncertainty.
Complex tools with many parameters or behaviors need more documentation. 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 75%, and the description elaborates on last_timestamp (unix seconds, omit for latest), page_size (range and default), and symbol suffix meaning. It does not explain _jq, but that parameter appears internal. The description adds meaningful semantics beyond the schema, such as data source attribution.
Input schemas describe structure but not intent. Descriptions should explain 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 HK or US stocks, with a specific verb, resource, and market scope. It differentiates from siblings like short_margin, short_positions, and trade_stats by focusing on short-sale volume 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?
It explains market inference from symbol suffix and lists data sources for each market, giving clear context for when to use it. However, it does not explicitly contrast with alternative short-selling tools or state when not to use it, leaving some inference to the agent.
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 |
|---|---|---|---|
| _jq | No | ||
| signal_id | Yes | Signal ID, e.g. "sign_992_1a00c9425c3_48ab". Get IDs from `signals`. |
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 fully covered. The description adds the behavioral fact that the response includes the same fields as the list plus `analysis`, which is useful. It does not describe pagination, error behavior, or response size, but for a simple read-by-ID tool the annotations carry most of the burden.
Agents need to know what a tool does to the 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 filler. The core action and ID source are front-loaded, and the extra-field detail is stated compactly. 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 detail tool with one required parameter and no output schema, the description is nearly complete. It tells the agent what the response contains (same fields as list plus `analysis`) and where to get the ID. It could mention that the response is a single object or that `analysis` may be large, but those are minor omissions given the annotations and simple parameter surface.
Complex tools with many parameters or behaviors need more documentation. 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 50%: `signal_id` is documented with an example and a pointer to `signals`, while `_jq` is undocumented. The description reinforces the meaning of `signal_id` by saying 'Get one signal by ID' and 'from `signals`', which adds context beyond the schema. It does not explain `_jq`, but that parameter appears to be a generic query utility across tools, so the gap is minor.
Input schemas describe structure but not intent. Descriptions should explain 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'), a specific resource ('one signal by ID'), and explicitly distinguishes it from the list tool ('from `signals`'). It also names the extra field (`analysis`) that makes it a detail endpoint, so an agent can tell it apart from `signals` and other detail tools 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?
The description implies when to use it: when you need a single signal's full analysis rather than the list. It references `signals` as the source of IDs, which is a clear prerequisite. It does not explicitly say 'use `signals` for lists' or name alternatives, but the context is clear enough for a detail-vs-list pattern.
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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is known. The description adds useful behavioral context: results are signal summaries rather than full analyses, and signals are catalyst-triggered. 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?
Three concise sentences with no filler. The core purpose, filtering/pagination behavior, and the crucial routing note about signal_detail are all front-loaded and 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 read-only list tool with rich parameter descriptions and clear annotations, this is nearly complete. The main gaps are the undocumented `_jq` parameter and no guidance on the response shape, which 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?
Schema coverage is 90%, with most parameters already described in detail, so the baseline is 3. The description groups filters into symbol, strategy, catalyst, and time range, but adds little syntax-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?
The description uses a specific verb ('Query') and a clear resource ('strategy signals'), and defines a signal as 'a strategy's take on a security, triggered by a catalyst.' It also distinguishes itself from signal_detail by noting that full strategy analysis is omitted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 names signal_detail as the alternative when full strategy analysis is needed, giving the agent a clear when-to-use vs. when-not-to-use signal. It also states the main filtering and pagination capabilities.
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 |
|---|---|---|---|
| _jq | No | ||
| file_key | Yes | File key from statement_list, e.g. "/statement_data/data/.../20975338.json" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description clarifies that the result is a pre-signed download URL rather than the file content, which is a useful behavioral distinction. It does not mention expiration or auth details, but the core behavior is transparent.
Agents need to know what a tool does to the 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 concise, front-loaded sentence; the essential output type and source are given immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 read-only nature and annotations, the description sufficiently explains what the tool does and where its input comes from. It omits details like URL expiration or response shape, but these are not critical for a simple URL-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?
The description adds meaning to file_key by tying it to statement_list output, but the optional _jq parameter is neither described in the schema nor in the description. With only 50% schema parameter coverage, this is a meaningful but incomplete addition.
Input schemas describe structure but not intent. Descriptions should explain 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 a specific action ('get a pre-signed download URL') and a specific resource ('statement data file'), and identifies the source tool (statement_list), making it easily distinguishable 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 clear context by noting the file must come from statement_list, implying a prerequisite workflow. It does not explicitly exclude alternatives, but the source reference is enough for an agent to sequence correctly.
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 |
|---|---|---|---|
| _jq | No | ||
| 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". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds value by specifying that the tool returns an id meant for export, which is behavioral context beyond annotations. It does not mention pagination or response format, but given the simple read-only nature, this is sufficient.
Agents need to know what a tool does to the 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, zero fluff. The core purpose is front-loaded, and the export linkage is a single clear follow-up. 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?
For a simple list tool with read-only annotations and no output schema, the description covers the essential purpose and the critical linkage to statement_export. It omits an explicit statement of the response structure, but the agent can infer it returns statement objects with ids, dates, and types. Slight gap, but not material.
Complex tools with many parameters or behaviors need more documentation. 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 75% (3 of 4 parameters have descriptions, _jq lacks one). The description adds minimal parameter insight beyond what the schema provides; it mentions daily/monthly which aligns with statement_type, but the schema already details that. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('available account statements'), with explicit distinction between daily and monthly types. Clearly separates from sibling statement_export by indicating that this tool lists while the other downloads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 linkage to statement_export ('Use the id with statement_export to download'), which guides the agent on how to use the output. However, it does not explicitly contrast with alternatives for listing, but there is no competing list tool among siblings, so this is adequate.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 readOnly, idempotent, and non-destructive behavior, so safety is covered. The description adds value by listing the returned fields and by documenting the non-obvious routing behavior for .BKKT crypto symbols on US accounts. It does not disclose error behavior or output container shape, but for a read-only lookup the added context is solid.
Agents need to know what a tool does to the 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 three sentences with no filler: purpose, returned fields, then the niche routing caveat. It is front-loaded with the core behavior and keeps the edge case separate. 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 lookup with no output schema, the description covers the key return fields and the main symbol-format caveat (BKKT/HAS/OSL). It is incomplete only on the optional _jq parameter and the exact JSON shape, which are minor for typical calls. Overall it gives an agent enough to invoke the tool correctly for standard symbols.
Complex tools with many parameters or behaviors need more documentation. 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 documents the symbols array with an example, and the description's per-symbol field list is mostly about output rather than input constraints. The optional _jq parameter is left completely undocumented in both the schema and the description, so an agent cannot infer its meaning. The crypto symbol example adds a little input context but does not compensate for the _jq gap.
Input schemas describe structure but not intent. Descriptions should explain 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 pair ('Get static info for securities') and enumerates the exact per-symbol fields returned, making the tool's function unmistakable. While it does not explicitly name a sibling like security_facts or security_list, the field list is specific enough to differentiate it from quote/candlesticks tools. This is clear but stops short of full sibling 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 whenever an agent needs static security metadata, which is a reasonable minimal signal. However, it never states when to prefer this tool over alternatives like security_facts or security_list. The US-account crypto routing note is a constraint, not a comparison to another tool, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_positionsStock PositionsBRead-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 |
|---|---|---|---|
| _jq | No |
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 attributes, so the bar is lowered. The description adds account-dependent behavior (the US-only us_asset_overview field with its sub-structure), which is useful behavioral detail 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 compact and efficient: one sentence establishes the main purpose and scope, and the second adds the account-specific important field. Every word adds value, and it is front-loaded with the 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?
With no output schema, the description should fill in the return shape for the general case, but it only describes a US-account special field and not the base response fields or the meaning of the `_jq` parameter. An agent cannot reliably interpret the result of the default or transform the API without additional guesswork, leaving the description incomplete for invoking 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 0%, and the only parameter `_jq` has no type help, no description, and no mention in the tool description. The agent is given zero guidance about what the string parameter means, how to use it, or whether it is a filter/query, making this a significant manual gap that the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain 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 current stock positions across all channels,' which is a specific verb and resource with a scope qualifier. It distinguishes itself from siblings like fund_positions and short_positions through the asset class, though it does not explicitly name the 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 provides a clear context—daily current stock positions across channels—but it does not say when to prefer this tool over fund_positions, short_positions, or broker_holding, nor does it provide exclusions. Usage guidance is mostly inferred from the verb 'Get.'
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 |
|---|---|---|---|
| _jq | No | ||
| 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) | |
| attached_order_type | No | Attach a take-profit / stop-loss leg to this order: "PROFIT_TAKER" (take-profit only), "STOP_LOSS" (stop-loss only) or "BRACKET" (both). Omit for a plain order; every other attached_* field is ignored without it. | |
| attached_expire_time | No | Expiry of the attached leg as a unix timestamp in seconds (e.g. "1767139200"). Required when attached_time_in_force is GTD. | |
| attached_outside_rth | No | Outside-RTH setting of the triggered leg: "RTH_ONLY" / "ANY_TIME" / "OVERNIGHT". | |
| attached_time_in_force | No | Time-in-force of the attached leg: "Day" / "GTC" / "GTD". Defaults to the parent order's setting when omitted. | |
| attached_stop_loss_price | No | Stop-loss trigger price. Required for STOP_LOSS and BRACKET. | |
| attached_profit_taker_price | No | Take-profit trigger price. Required for PROFIT_TAKER and BRACKET. | |
| attached_activate_order_type | No | Order type the attached leg is submitted as once triggered, e.g. "LO" (then set the matching attached_*_submit_price) or "MO". | |
| attached_stop_loss_submit_price | No | Limit price of the stop-loss leg, for an LO attached_activate_order_type. | |
| attached_profit_taker_submit_price | No | Limit price of the take-profit leg, for an LO attached_activate_order_type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by explaining the dry-run behavior in detail. It discloses that without the execute parameter, nothing reaches the exchange, and that the confirmation code is single-use, expires in 10 minutes, and is tied to the exact order. This is critical for safety. No contradiction with annotations found.
Agents need to know what a tool does to the 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 and front-loaded with the most critical safety information. It clearly states the dry-run requirement, the two-step process, and the conditions for using the execute parameter. No unnecessary words are used; 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 the tool's complexity (24 parameters, 5 required, many conditional behaviors based on order type), the description provides essential guidance on the execution workflow都有了。 The schema covers the parameter semantics thoroughly, and the description adds the mandatory protocol for using execute. The lack of an output schema is acceptable because the tool's return values are likely simple previews or confirmations not requiring extra explanation.
Complex tools with many parameters or behaviors need more documentation. 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 very high coverage (96%) with detailed descriptions of each parameter, so the baseline is 3. The tool description adds crucial information about the execute parameter, explaining its role in the dry-run workflow. While the schema explains each field, the description reinforces the criticality of the execute parameter's 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: submitting buy/sell orders. It also introduces the dry-run mechanism, which is a specific and important behavior. It distinguishes itself from siblings like cancel_order and replace_order by focusing on order submission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 defines the two-step protocol for using this tool safely, including when to call without execute, when to show the preview to the user, and when to re-call with the confirmation code. It also warns against quoting the code without explicit confirmation and provides clear alternatives.
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, trade_id, symbol, side, quantity, price, trade_done_at}. Pass symbol or order_id to filter.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 establish read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds concrete behavioral detail by specifying that it returns an executions array with exact fields and supports filtering by symbol or order_id. 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 tight sentences with the core scope front-loaded, followed by the return shape and filter options. Every sentence adds value with no 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?
For a simple read-only tool with strong annotations, the description provides enough: return fields, filter options, and the today-only scope. Minor omissions like timezone handling or empty-result behavior are not material 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?
The schema already documents symbol and order_id as filters, and the description echoes that usage. The _jq parameter has no schema description and is not mentioned in the description, so with 67% schema coverage the description only partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain 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'), names the exact resource ('today's trade executions (fills)'), and scopes it to today. It also enumerates the returned fields, making it easy to distinguish from siblings like history_executions or 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 clearly implies this is for today's execution records and mentions optional symbol/order_id filters. However, it does not explicitly tell the agent when to use this instead of history_executions or today_orders, leaving that routing to inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
today_ordersToday's OrdersARead-onlyIdempotentInspect
Get orders placed today. Returns orders[]{order_id, symbol, side, order_type, status, quantity, price, submitted_at, executed_quantity, executed_price, attached_orders[]}, where attached_orders[] holds the order's take-profit/stop-loss legs. Pass symbol to filter by security, or order_id for one order. To fetch an attached leg by its own ID, pass that ID as order_id together with is_attached=true — the leg itself comes back as the order entry. is_attached does nothing without order_id, and neither has any effect for US accounts, which are served by the US order endpoint. US accounts only: us_action (Buy/Sell), us_page, us_limit filter/paginate via a separate US order endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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). Ignored for AP accounts. | |
| order_id | No | Filter by order ID: a parent order ID, or (with is_attached=true) the ID of an attached take-profit / stop-loss leg. Has no effect for US accounts, which are served by the US order endpoint. | |
| us_limit | No | US accounts only: page size (default 20). Ignored for AP accounts. | |
| us_action | No | US accounts only: filter by side, "Buy" or "Sell". Omit for all. Ignored for AP accounts (the region is inferred from the account — do not pass it). | |
| is_attached | No | Only meaningful together with order_id: it says that order_id is the ID of an attached take-profit / stop-loss leg, and the response then carries that leg itself as an order entry. On its own it does nothing, and it has no effect for US accounts either. |
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 valuable behavioral context beyond annotations: the attached_orders[] nesting, the leg-fetching behavior via is_attached, and the US-account divergence. It doesn't describe pagination or rate limits, but the annotations plus the detailed behavior make this a strong 4.
Agents need to know what a tool does to the 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 dense but front-loaded: the core purpose and return shape come first, followed by filtering and edge cases. Every sentence carries information, though the US-account caveat is repeated in the description and in the schema, making it slightly redundant. Still, it is well-organized and efficient for the complexity it covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description covers the return shape, filtering options, attached-leg behavior, and US-account divergence. It doesn't mention pagination for AP accounts or the _jq parameter, but the core calling contract is complete. The complexity of the attached-leg logic and US/AP split is well addressed.
Complex tools with many parameters or behaviors need more documentation. 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 86%, so the schema already documents most parameters. The description adds meaning beyond the schema by explaining the relationship between order_id and is_attached, the attached_orders[] return structure, and the US-account exception. It doesn't fully compensate for the undocumented _jq parameter, but the added relational semantics justify a 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 opens with a specific verb and resource ('Get orders placed today') and immediately distinguishes itself from related order tools by specifying the return shape and the attached-leg behavior. It clearly differentiates from siblings like today_executions, history_orders, and order_detail by scoping to today's orders and explaining the attached_orders[] structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit when-to-use guidance: pass symbol to filter, order_id for one order, and is_attached=true with order_id to fetch a leg. It also states exclusions: is_attached does nothing without order_id, and US accounts are served by a separate US order endpoint. This is unusually complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topicTopic ListBRead-onlyIdempotentInspect
Get discussion topics for a symbol. Returns items[]{id, title, author, created_at, like_count, comment_count, content_summary}.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent behavior. The description adds value by naming the exact response fields, which is useful since no output schema exists. It does not disclose pagination, ordering, or limits, but for a simple symbol-scoped listing the basics are covered.
Agents need to know what a tool does to the 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, front-loaded with the action, and directly communicates the tool's purpose. The return fields are compactly listed without unnecessary 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?
The tool exists alongside many topic-related siblings (topic_search, topic_replies, topic_create), but the description offers no differentiation or guidance. It does expose the return shape in the absence of an output schema, yet omits pagination/ordering/limit details that a consumer would likely need for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. 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 only restates 'for a symbol', which mirrors the already-described symbol parameter. It adds no meaning for the `_jq` parameter flagged in the schema. With only half the parameters documented in the schema and no additional clarification here, the description contributes little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: 'Get discussion topics for a symbol.' It also lists the returned item fieldsarke. However, it does not explicitly differentiate from sibling tools like topic_search or topic_create beyond the basic verb, so it stops short of full 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?
There is no guidance on when to use this tool versus alternatives such as topic_search or topic_create. The description only says it gets topics for a symbol, with no mention of filters, prerequisites, or cases where a sibling tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
|---|---|---|---|
| _jq | No | ||
| 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). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the agent knows this is a non-idempotent write. The description adds the behavioral nuance that 'post' is plain text only while 'article' accepts Markdown, and that title is required for 'article'. It doesn't disclose side effects like whether creation is immediate, whether it requires authentication, or what happens on duplicate titles, but the annotations cover the core safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence states the action and resource; the second sentence front-loads the critical type distinction and its constraints. 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?
For a create tool with 5 parameters and no output schema, the description covers the essential behavioral distinction (post vs article) and the title requirement. It doesn't mention return values, but the absence of an output schema lowers the burden. It also doesn't mention symbols max count, but the schema already documents that. The description is complete enough for an agent to call 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 description coverage is 80%, so the schema already documents most parameters. The description adds the default value for topic_type ('post') and the title requirement for 'article', which reinforces the schema. It doesn't add meaning for _jq or symbols beyond what the schema provides, but the schema descriptions are already adequate, so the 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 states a specific verb ('Create') and resource ('a new discussion topic'), and immediately distinguishes the two topic_type variants ('post' vs 'article') with their key constraints. This clearly separates it from sibling tools like topic_create_reply, topic_detail, and topic_search without needing to inspect 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 clear context on when to use each variant: 'post' is plain text, 'article' requires a non-empty title and accepts Markdown. It doesn't explicitly name alternatives or exclusions, but the topic_type distinction effectively tells the agent which mode to pick. It doesn't mention when to use topic_create_reply instead, but the verb 'Create a new discussion topic' makes the primary use case clear.
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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal this is a non-read-only, non-idempotent mutation; the description confirms the create effect and adds the nesting behavior. It does not add depth about permissions, what the created reply contains, failure modes, or return behavior, but for a simple create operation the lack is not glaring.
Agents need to know what a tool does to the 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; the core action comes first and the conditional parameter guidance follows immediately. 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 two-required-parameter create tool with no nested objects and no output schema, the description plus schema covers how and when to invoke it. The only minor gap is the unexplained _jq parameter, which appears incidental.
Complex tools with many parameters or behaviors need more documentation. 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 75%, so the schema carries most of the parameter meaning. The description restates the reply_to_id conditional that the schema already documents, adding no new semantic value, and it does not explain the undocumented _jq 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 states a specific action ('Create a reply') and resource ('discussion topic'), and clarifies the optional nesting behavior. This distinguishes it from sibling topic_create (which creates a topic) without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a clear condition: pass reply_to_id for nested replies and omit it for a top-level reply, which is the main branching decision when using this tool. It does not explicitly name alternatives or exclusion cases, but the context is obvious from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_detailTopic DetailARead-onlyIdempotentInspect
Get discussion topic detail by topic_id.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| topic_id | Yes | Topic ID |
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, such as whether the response includes replies or metadata, 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, front-loaded sentence that states the action, resource, and key parameter with no wasted words. It is appropriately sized for a simple 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?
For a simple read tool with strong annotations and a clear required parameter, the description is mostly sufficient. However, it does not clarify what 'detail' includes (e.g., replies, author, timestamps) or how it differs from topic_replies, which could matter for tool selection. The lack of an output schema increases the burden slightly, but the core call is unambiguous.
Complex tools with many parameters or behaviors need more documentation. 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 50%: topic_id is described as 'Topic ID' in the schema, while _jq has no description. The tool description adds no parameter-level meaning beyond restating the key parameter. With one of two parameters undocumented, the description does not compensate for the gap, but the main parameter is clear.
Input schemas describe structure but not intent. Descriptions should explain 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 ('discussion topic detail') keyed by topic_id, which clearly identifies the tool's function. It does not explicitly differentiate from siblings like topic, topic_replies, or topic_search, but the resource and parameter make the purpose reasonably 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 implies usage: call when you need discussion topic detail by topic_id. It does not state when not to use it or mention alternatives such as topic_replies or topic_search, so the agent must infer the appropriate context from the name and sibling list.
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 |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds value by specifying pagination defaults (page=1, size=20, range 1-50) and the fact it is paginated, which is behavioral context not present in the annotations. It doesn't cover rate limits or response shape, but those are minor given the clear read-only nature.
Agents need to know what a tool does to the 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 communicates the core purpose and key constraints with no extra words. It avoids redundant fillers and packs the key behavior into a compact phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is straightforward, the description does not explain the _jq parameter, which is a gap in the input schema. There is no output schema, so the description could be more explicit about what a reply entry looks like, but the general intent is clear. The annotations cover safety, and pagination is described, but the undocumented parameter leaves context 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 schema already provides descriptions for page, size, and topic_id, and the description reiterates those defaults without adding new meaning. The _jq parameter is undocumented in both the schema and the description, leaving a gap for agents. At 75% schema coverage, the description does not fully compensate for this unexplained parameter, but it does reinforce the pagination contract minimally.
Input schemas describe structure but not intent. Descriptions should explain 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 "Get" paired with a clear resource ("replies to a discussion topic") and marks it as paginated. It distinguishes from sibling tools like topic_create_reply (a write operation) and topic_detail (which retrieves topic metadata, not replies), so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states the tool's operation clearly, but it does not explicitly say when to use this over alternatives or include an exclusion. The intended use case (“get replies to a topic”) is implied by the name and description, but there's no routing or comparative guidance against siblings like topic_detail or topic_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_searchTopic SearchBRead-onlyIdempotentInspect
Search community topics/posts by keyword. Returns id, author, time, and excerpt.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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, idempotentHint=true, and destructiveHint=false, so the agent knows it's a safe read operation. The description adds that it 'Returns id, author, time, and excerpt,' which is useful return-format information beyond the annotations. However, it doesn't disclose pagination behavior, sorting, or any edge cases (e.g., empty results, authentication requirements), so it doesn't go beyond the minimum.
Agents need to know what a tool does to the 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 sentence, front-loaded with the core purpose and immediately followed by the return fields. It is concise and free of filler, achieving good structure for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, the description covers the basic return fields and purpose. However, it lacks an explanation of the _jq parameter, does not mention the limit default (which is in the schema but not in the description), and provides no guidance on sorting or pagination. Given the lack of an output schema and the undocumented parameter, the description is only 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?
Schema description coverage is 67%, meaning _jq lacks a description. The description adds no clarification for _jq, and it repeats no information about 'keyword' or 'limit' beyond what the schema already provides. Since the schema is not 100% covered and the description fails to compensate, the parameter semantics are incomplete.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Search community topics/posts by keyword.' It specifies a verb, resource, and scope ('community'), which distinguishes it from similar search tools like 'news_search' or 'screener_search' without explicitly naming them. However, it doesn't explicitly differentiate from the many other search-related siblings, so a perfect 5 is not warranted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 doesn't mention scenarios where this tool is preferred over 'topic_detail', 'topic_replies', or 'news_search'. An agent must infer that it's for community content search, but there's no explicit 'use this when...' or exclusion of other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_moversTop MoversARead-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 |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, read-only, idempotent call. The description adds meaningful behavior beyond that: the 20-trading-day standard deviation threshold, the correlated news reasons, and market/sort defaults. Output and pagination details are not described, but the schema covers 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?
Two compact sentences front-load the core behavior and then provide terse, useful parameter shorthand. There is no fluff and no needless repetition of schema contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six parameters and no output schema, the description captures the essential invocation semantics: mover definition, market scope, sort default, and return intent. Remaining parameters such as date, limit, and next_params are fully explained in the schema. Exact output field names are absent, but the return intent is clear.
Complex tools with many parameters or behaviors need more documentation. 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 high, so most parameters are already documented. The description's markets and sort shorthand largely restates schema content and adds little new semantic value, while _jq remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain 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 clear verb and resource: 'Get stocks whose price fluctuation exceeds the 20-trading-day standard deviation, with correlated news reasons.' This precise selection rule distinguishes top_movers from the many market-data siblings without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool and gives inline usage hints for markets and sort defaults. However, it does not explicitly state when not to use it, nor does it name alternatives or prerequisites, so usage guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tradesRecent TradesBRead-onlyIdempotentInspect
Get recent trades (max 1000). Returns trades[]{price, volume, timestamp, trade_type, direction} for the symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the return structure and the 'max 1000' limit, which is useful, but it omits details like the precise time range ('recent' is ambiguous), ordering of results, or behavior when fewer trades exist. It adds some value beyond annotations but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that leads with the action and output format, then specifies the symbol context. It contains no redundant phrasing or filler, making it ideal for quick parsing by an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description lists the return fields, which partially compensates. However, it leaves key details undefined: the meaning of 'recent' (time window), result ordering, pagination behavior, and the purpose of the undocumented _jq parameter. For a tool with only 3 parameters and a clear read-only nature, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (count and symbol have descriptions; _jq has none). The description reinforces that results are for a specific symbol, but it does not add new meaning beyond the schema for the parameters. The limit is already in the schema ('max 1000'), and the description does not explain _jq or how count interacts with 'recent'. Baseline 3 is appropriate given partial 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 verb ('Get'), the resource ('recent trades'), and the key output fields ('trades[]{price, volume, timestamp, trade_type, direction}'). It is specific enough to distinguish from many sibling tools (e.g., trade_stats, short_trades), though it does not explicitly name alternatives or contrast with 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?
No explicit guidance is given about when to use this tool versus alternatives like history_executions, today_executions, or candlesticks. The phrase 'recent trades' implies a time scope, but it does not state a defined window (e.g., last 24 hours) or any exclusion criteria. An agent is left to infer the intended use from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_statsTrade StatisticsBRead-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 |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description makes the read-only nature clear by saying it 'gets' statistics and by describing returned fields, consistent with annotations. It does not disclose any additional behavioral details such as result size limits, data freshness, or whether the output is aggregated differently from 'trades'.
Agents need to know what a tool does to the 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: the first sentence states the action and resource, and the second sentence gives the exact return schema. No filler or ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 statistics call, the description covers the purpose and output shape, but it omits usage context, how the price-volume buckets are defined, and any guidance on selecting this tool over the many sibling market-data tools. It is 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 covers only one of two properties with a meaningful description ('symbol'), and the description adds no explanation for the undocumented '_jq' parameter. The returned fields are named, but parameter semantics beyond what the schema already states are not enriched.
Input schemas describe structure but not intent. Descriptions should explain 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 names a clear resource ('trade statistics') with a concrete output shape (items[]{price_range, buy_volume, sell_volume, neutral_volume}). It is clear what the tool does, though it does not explicitly distinguish itself from sibling tools such as 'trades' 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?
There is no guidance on when to choose this tool over sibling alternatives. The description states what it returns but does not mention use cases, conditions, or contrast with related tools like 'trades' or 'capital_flow'.
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 |
|---|---|---|---|
| _jq | No | ||
| end | Yes | End date (yyyy-mm-dd) | |
| start | Yes | Start date (yyyy-mm-dd) | |
| market | Yes | Market code: HK, US, CN, SG |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as safe and read-only. The description adds only the scoping behavior (between dates, per market), but does not disclose return shape, inclusivity of dates, or how holidays are handled.
Agents need to know what a tool does to the 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, front-loaded sentence states the core action and scope. The market list is compact and immediately relevant. No 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?
For a simple read-only lookup, the description plus schema is enough for an agent to select and invoke the tool. It does not describe the response structure, but the tool's purpose is narrow and safe, so 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 schema already describes the three parameters with 75% coveragecars. The description's market list duplicates schema info and adds little new meaning; it does not clarify date formats, inclusivity, or parameter interactions beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain 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 a specific resource ('trading days') with clear scope (market, date range). It distinguishes the tool from most siblings by intent, though it does not explicitly name any sibling 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 implies when to use the tool: to retrieve trading days for a market in a date range. However, it gives no explicit guidance on when not to use it, nor does it contrast with nearby tools like trading_session or market_status.
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 |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true purporting safe read benefits, but the description adds no behavioral context beyond the schema–such as market scope or timezone handling. It doesn't contradict annotations, but doesn't enrich them either.
Agents need to know what a tool does to the 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 and well-structured, providing the core purpose up front and the return shape in a compact way. 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?
While the return structure is givenstatic, the meaning of '_jq' is not explained anywhere, which matters because the schema doesn't cover it. The tool is relatively simple,but an agent cannot confidently craft the query without knowing what _jq does.
Complex tools with many parameters or behaviors need more documentation. 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 '_jq' is completely undocumented in the schema (0% coverage), and the description doesn't explain it. For a filtering parameter, this is a major gap.
Input schemas describe structure but not intent. Descriptions should explain 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 trading session schedules for all markets)Skip with a specific noun and action. It also gives the return structure, distinguishing it from similar data tools like market_status or 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?
The description implies use when needing trading session times, but doesn't explicitly differentiate from related tools such as market_status or trading_days, nor give guidance on 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.
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 | |
| _jq | No | ||
| mode | No | Update mode for securities: "add", "remove", or "replace" (default: "replace") | |
| name | No | New group name (optional) | |
| securities | No | Securities list (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds the specific change capabilities (rename, modify securities) but does not disclose any additional side effects, permissions, or reversibility concerns. Given annotations cover the safety profile, 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 two sentences, front-loaded with the core action, and every word serves a purpose. It is concise and structured so the most important information (what it does and the two update modes) appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 5-parameter tool with only one required parameter and no output schema, the description covers the essential usage: what can be updated and the mode parameter for securities. It does not explain edge cases like what happens if both name and securities are omitted, but the schema and annotations cover defaults and safety. Overall, it is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, and the schema already documents name, securities, and mode with meaningful descriptions. The description restates the relationship between securities and mode but does not add new semantic information beyond the schema. With high coverage, 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 tool updates a watchlist group by id, and specifies the two main operations: rename and modify securities. This distinguishes it from siblings like create_watchlist_group and delete_watchlist_group. The verb 'Update' plus the resource and the explicit param usage make 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 explains the two supported update modes (rename via name, modify via securities+mode), giving concrete guidance on how to use the tool. It does not explicitly name alternatives or state when not to use it, but the sibling set and the name itself make it clear this is for modifying existing groups rather than creating or deleting them.
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 US-specific variant (ai_summary plus a metrics.pe object with different sub-fields). The region is detected from the account automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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 and idempotentHint, and the description adds valuable behavioral context: US accounts with .US symbols receive a US-specific variant with ai_summary and a metrics.pe object with different sub-fields, with automatic region detection. This goes beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, followed by the important conditional variant. Every clause 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?
The description covers the core purpose and the key regional variant, but with no output schema it does not describe the general return shape or how this tool relates to the sibling valuation tools. An agent could call it correctly, but selection guidance and output expectations are 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?
Schema description coverage is 50%, with symbol documented and _jq undocumented. The description adds some symbol-related meaning by noting that .US symbols trigger a regional variant, but it does not explain _jq or fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Get valuation overview with peer comparison.' It clearly distinguishes this from sibling tools like valuation_comparison, valuation_history, and valuation_rank by framing it as an overview that includes peer 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?
The description provides no guidance on when to use this tool versus valuation_comparison, valuation_history, or valuation_rank. The regional variant note is behavioral context, not usage guidance, and 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.
valuation_comparisonStock ComparisonBRead-onlyIdempotentInspect
Stock valuation comparison. Mode A (single): pass only symbol — server returns stock + auto-selected industry peers.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds context that the server auto-selects industry peers and that comparison_symbols is currently ignored, which goes beyond annotations. However, it omits details about response structure or pagination, and references 'Mode A' without describing other modes, leaving ambiguity.
Agents need to know what a tool does to the 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, efficient sentence that front-loads the purpose ('Stock valuation comparison') and immediately explains the primary mode. Every word earns its place; no 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?
For a read-only tool with no output schema, the description covers the main usage and the current limitation on comparison_symbols, but leaves gaps: it doesn't explain what 'valuation comparison' entails (metrics), what the response contains beyond 'stock + peers', or whether other modes exist. The ambiguity around 'Mode A' and the undocumented _jq parameter reduce 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 75% (only _jq lacks description), so baseline is 3. The description adds meaning for comparison_symbols by stating it is pending backend support and currently ignored, and clarifies that symbol alone triggers peer auto-selection. It does not compensate for _jq, which remains undocumented in both schema and 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 states a specific verb ('comparison') and resource ('stock valuation'), and clarifies the primary mode (single symbol) and what it returns (stock + auto-selected industry peers). It distinguishes from siblings like 'valuation' and 'industry_peers' by implying the combination, though it doesn't explicitly name 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 gives a usage instruction for Mode A ('pass only symbol'), but does not explain when to prefer this over other valuation tools, nor does it mention any exclusions or alternative tools. It notes that comparison_symbols is pending backend support, which is a constraint, but that is more behavioral than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuation_historyValuation HistoryBRead-onlyIdempotentInspect
Get detailed valuation history time series.
| Name | Required | Description | Default |
|---|---|---|---|
| _jq | No | ||
| symbol | Yes | Security symbol, e.g. "700.HK" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds that the result is a 'time series,' which gives some output-shape context, but it does not disclose details like pagination, date range defaults, or supported metrics.
Agents need to know what a tool does to the 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, front-loaded sentence with no filler or repetition. It communicates the essential action and resource immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 should clarify what metrics the history contains (e.g., P/E, P/B, EV/EBITDA), the supported time range, or how this differs from sibling valuation tools. It only says 'detailed valuation history time series,' leaving the agent without enough context to fully anticipate the response or choose among similar 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?
The schema already documents 'symbol' with an example, and the description adds no parameter-level meaning. The '_jq' parameter is left undescribed in both schema and description, and with 50% schema coverage the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Get') and the resource ('valuation history time series'). It does not explicitly differentiate from sibling tools like 'industry_valuation' or 'institution_rating_history', but the specific term 'valuation history' makes the core intent reasonably 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 guidance is given on when to choose this tool over related siblings such as 'valuation', 'industry_valuation', or 'institution_rating_history'. There is no mention of date ranges, scope, or alternative tools for different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
valuation_rankValuation RankARead-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 |
|---|---|---|---|
| _jq | No | ||
| 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 declare readOnlyHint, idempotentHint, and destructiveHint=false, indicating a safe read operation. The description adds the detail that it returns an industry percentile, which is useful. It does not disclose return format, pagination, or specific data limits, but annotations carry the main safety profile. The description 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 that conveys the core purpose and includes a critical format detail about dates. It's concise and front-loaded with the tool's main function. No fluff or redundancy. The format note is essential for correct invocation and 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?
The tool is a simple read operation with clear annotations. The description covers purpose, date format, and metric. However, it does not describe the output structure (no output schema), nor does it mention what percentile includes (e.g., time series vs single value). For a data retrieval tool, this is a moderate gap but not severe given the 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 75%, with symbol, start, and end already described in the schema. The description adds the date format constraint (yyyymmdd) which is not in the schema, providing marginal value. However, it does not explain default date behavior beyond what the schema already states. The _jq parameter is undocumented, but the description does not compensate for that gap.
Input schemas describe structure but not intent. Descriptions should explain 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 verb (get), resource (valuation rank), and scope (PE/PB/PS/dividend yield industry percentile over a date range). It distinguishes from siblings like valuation, valuation_comparison, and valuation_history by specifying the metric and date range. The format is clear and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 specifies the date range inputs and format, which is implicit usage guidance. However, it does not explicitly state when to use this tool over alternatives like valuation, valuation_comparison, or valuation_history. It names the parameters but not the conditions or scenarios that would make this tool the right choice.
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 |
|---|---|---|---|
| _jq | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds value by specifying the exact return payload (issuers array with id, name_en, name_cn) and how the returned id is meant to be used, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences carry purpose, return structure, and downstream usage with no wasted words. The most important information is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 reference-data tool, the description covers purpose, output fields, and how to use the result. The main gap is the undocumented _jq parameter, but since it is optional and this is a read-only lookup, the description is still adequate for most calling scenarios.
Complex tools with many parameters or behaviors need more documentation. 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 a single optional _jq parameter with no description, and schema description coverage is 0%, so the description must compensate. It does not mention _jq at all, leaving the parameter's purpose unexplained. The description only covers output fields, not input 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 uses a specific verb and resource ('Get HK warrant issuer information') and further clarifies the return shape with issuers[]{id, name_en, name_cn}. It also references warrant_list for downstream use, which distinguishes it from related warrant tools without needing to inspect their 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 phrase 'Use id in warrant_list issuer filter' gives clear downstream context for when this tool's output is needed. It does not explicitly state when not to use it or name alternative tools, but the usage context is clear enough for an agent to route correctly.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 state readOnlyHint, idempotentHint, and non-destructive, so the tool is clearly a safe read. The description adds detail on the output fields (e.g., warrants[] with specific fields) and the filtering capability, which is useful. It doesn't contradict annotations, and the additional context about the return format goes beyond annotations. No issues of destructive behavior 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 sentence that is concise and front-loaded with the main action and result format. Every word earns its place, listing the output fields without redundancy. It's optimally sized for an API tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 moderate complexity (9 parameters, 3 required), the description covers the key purpose and output. It doesn't explain return codes, pagination, or error conditions, but the output schema is absent and annotations cover safety. The description is enough for an agent to call it correctly with schema help. Could benefit from mentioning that some filters are optional and the source of issuer IDs, but not a critical omission.
Complex tools with many parameters or behaviors need more documentation. 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 89%, so the schema already documents most parameters well. The description adds the output structure but doesn't add meaning to parameters beyond what the schema provides. For example, it doesn't clarify the exact syntax or relationships between filters. Since the schema covers most, the baseline is 3 and the description adds minimal 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 states a specific action (get filtered warrant list) and identifies the resource (underlying symbol) and the output structure. It distinguishes from siblings like warrant_quote by focusing on a list of warrants with filters. However, it doesn't explicitly name alternative tools for warrant data, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tool is used to fetch warrant lists for a symbol, but gives no explicit guidance on when to use it versus alternatives like warrant_quote (which likely returns a single quote). It also doesn't mention any prerequisites (e.g., issuer IDs from warrant_issuers) beyond the schema. This is adequate but not proactive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warrant_quoteWarrant QuoteBRead-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 |
|---|---|---|---|
| _jq | No | ||
| 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 provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, and the description contradicts none of these. The field list ('last_done, prev_close, ...') informs the agent about response content, but the description does not disclose anything else about behavior such as data recency, auth requirements, or rate limits, so it adds only modest value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clean sentences with a front-loaded verb-resource construction followed by a tight comma-separated field list. No fluff, no redundant detail—every part 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, read-only quote tool with clear annotations and no output schema, listing the returned fields goes a long way. Still, the unexplained '_jq' parameter and the absence of any statement about data scope (e.g., real-time vs delayed) leave small but relevant gaps, making it just above the minimum viable but not fully 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 description coverage is 50%: only the 'symbols' property has a schema description, and the description merely restates that the response is 'per symbol', adding no new meaning over the schema. The second parameter '_jq' is entirely undocumented in both the schema and the description, so the description fails to compensate for the missing 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 states a specific verb ('Get') and resource ('warrant quotes') and lists the exact quote fields returned, which makes it distinguishable from siblings like 'quote' and 'option_quote' by domain (warrants). However, it does not explicitly name or contrast any sibling tool, so it stops short of full 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 gives no usage guidance whatsoever: no mention of when to prefer this over a regular quote, no conditions/alternatives, no exclusions. Even sibling names like 'quote' or 'option_quote' suggest a context but the description leaves the selection decision entirely to the agent.
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 |
|---|---|---|---|
| _jq | 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, so the description's lack of behavioral detail is acceptable. It adds detail about the return structure (groups with nested securities and fields), which is useful context. But it doesn't mention any potential rate limits or whether the list is ordered in a specific way, which is minor for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the resource and action. It includes a compact return structure definition (`groups[]{id, name, securities[]{...}}`), which is detailed but efficiently encoded. No fluff or 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 read-only fetch tool with an optional parameter and no output schema, the description covers the essential return structure. However, it does not clarify what `_jq` does or whether any pagination or limit applies, which could be relevant for a large watchlist. But given the low complexity and annotations, completeness is adequate but not exemplary.
Complex tools with many parameters or behaviors need more documentation. 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 0%, but the description does not explain the only parameter `_jq` (likely a JSON query parameter). The description focuses on the return structure and not on how to use the parameter. This is a gap since the parameter is not self-explanatory, but since it is optional and likely a filter, the impact might be low. Baseline for 0% coverage is low, but the description provides enough for basic use.
Input schemas describe structure but not intent. Descriptions should explain 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 watchlist groups and their securities, listing the returned fields. It is distinct from sibling tools like create_watchlist_group, update_watchlist_group, and delete_watchlist_group, which are clearly mutations. However, there is no explicit comparison to other list-like read tools such as sharelist_list, but the purpose is still specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is a read-only operation to fetch watchlists, but it does not explicitly state when to use it over alternatives or when not to use it. The context is fairly clear given the tool name and read-only annotations, but no guidance is given about distinguishing from similar list tools like sharelist_list.
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 |
|---|---|---|---|
| _jq | No | ||
| 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 this as a read-only, non-destructive operation marked by readOnlyHint and idempotent. The description adds the response field list and 'current account' scoping, but does not mention pagination behavior or any edge cases.
Agents need to know what a tool does to the 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 sentences: the purpose is front-loadedSeptember, then the return shape follows. No 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?
For a simple read-only list endpoint with readOnly and idempotent hints, the description covers purpose and response fields. It does not mention pagination behavior, which is mildly relevant given page/size params, but the lack of an output schema makes the field list valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Page and size parameters already carry basic descriptions in the schema (67% coverage). The description adds no additional parameter guidance beyond implying a list of records.
Input schemas describe structure but not intent. Descriptions should explain 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 verb (
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly scopes the operation to 'current account', distinguishing it from deposit or balance listings, but it does not name an alternative tool or an explicit condition for choosing a sibling.
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.
165 tool updates
v0.10.6- Changed
account_balance1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
ah_premium1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
ah_premium_intraday1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
alert_add1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
alert_delete1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
alert_disable2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "alert_id": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - }, - "required": [ - "alert_id", - "enabled" - ], - "type": "object" -}New value: +null
- Changed
alert_enable2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "alert_id": { - "type": "string" - }, - "enabled": { - "type": "boolean" - } - }, - "required": [ - "alert_id", - "enabled" - ], - "type": "object" -}New value: +null
- Changed
alert_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "AlertIndicator": { - "properties": { - "condition": { - "type": [ - "string", - "null" - ] - }, - "enabled": { - "type": [ - "boolean", - "null" - ] - }, - "frequency": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "indicator_id": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "triggered_at": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "AlertSymbolGroup": { - "properties": { - "indicators": { - "items": { - "$ref": "#/$defs/AlertIndicator" - }, - "type": [ - "array", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "lists": { - "items": { - "$ref": "#/$defs/AlertSymbolGroup" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
anomaly2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "AnomalyChange": { - "properties": { - "change_rate": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "volume": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "all_off": { - "type": [ - "boolean", - "null" - ] - }, - "changes": { - "items": { - "$ref": "#/$defs/AnomalyChange" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
bank_cards1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
broker_holding2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "BrokerHoldingItem": { - "properties": { - "broker_name": { - "type": [ - "string", - "null" - ] - }, - "holding_change": { - "type": [ - "string", - "null" - ] - }, - "holding_quantity": { - "type": [ - "string", - "null" - ] - }, - "holding_ratio": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/BrokerHoldingItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
broker_holding_daily2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "BrokerHoldingDailyItem": { - "properties": { - "date": { - "type": [ - "string", - "null" - ] - }, - "holding_change": { - "type": [ - "string", - "null" - ] - }, - "holding_quantity": { - "type": [ - "string", - "null" - ] - }, - "holding_ratio": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/BrokerHoldingDailyItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
broker_holding_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "BrokerHoldingDetailItem": { - "properties": { - "broker_id": { - "type": [ - "string", - "null" - ] - }, - "broker_name": { - "type": [ - "string", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "holding_change": { - "type": [ - "string", - "null" - ] - }, - "holding_quantity": { - "type": [ - "string", - "null" - ] - }, - "holding_ratio": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/BrokerHoldingDetailItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
brokers2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "BrokerLevel": { - "properties": { - "broker_ids": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "position": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "position", - "broker_ids" - ], - "type": "object" - } - }, - "properties": { - "ask_brokers": { - "items": { - "$ref": "#/$defs/BrokerLevel" - }, - "type": "array" - }, - "bid_brokers": { - "items": { - "$ref": "#/$defs/BrokerLevel" - }, - "type": "array" - } - }, - "required": [ - "bid_brokers", - "ask_brokers" - ], - "type": "object" -}New value: +null
- Changed
business_segments1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
business_segments_history2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "BusinessSegmentsHistoryPeriod": { - "properties": { - "business": { - "items": { - "$ref": "#/$defs/SegmentBreakdown" - }, - "type": [ - "array", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "regionals": { - "items": { - "$ref": "#/$defs/SegmentBreakdown" - }, - "type": [ - "array", - "null" - ] - }, - "total": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "SegmentBreakdown": { - "properties": { - "name": { - "type": [ - "string", - "null" - ] - }, - "percent": { - "type": [ - "string", - "null" - ] - }, - "value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "historical": { - "items": { - "$ref": "#/$defs/BusinessSegmentsHistoryPeriod" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
calc_indexes1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
cancel_order2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - added
Input schema / properties / is_attachedAdded value: +{ + "description": "Set to true to cancel an attached take-profit / stop-loss leg by its own\norder_id, leaving the parent order in place. Omit (or false) to cancel a\nparent order, which cancels its attached legs with it.", + "type": "boolean" +}
- Changed
candlesticks1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
capital_distribution2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "CapitalDistribution": { - "properties": { - "large": { - "type": "string" - }, - "medium": { - "type": "string" - }, - "small": { - "type": "string" - } - }, - "required": [ - "large", - "medium", - "small" - ], - "type": "object" - } - }, - "properties": { - "capital_in": { - "$ref": "#/$defs/CapitalDistribution" - }, - "capital_out": { - "$ref": "#/$defs/CapitalDistribution" - }, - "timestamp": { - "type": "string" - } - }, - "required": [ - "timestamp", - "capital_in", - "capital_out" - ], - "type": "object" -}New value: +null
- Changed
capital_flow1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
cash_flow1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
company2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "ccy_symbol": { - "type": [ - "string", - "null" - ] - }, - "ceo": { - "type": [ - "string", - "null" - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "detail_url": { - "type": [ - "string", - "null" - ] - }, - "employees": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "exchange": { - "type": [ - "string", - "null" - ] - }, - "founded_year": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "industry": { - "type": [ - "string", - "null" - ] - }, - "intro": { - "type": [ - "string", - "null" - ] - }, - "market_cap": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "share_list": { - "items": true, - "type": [ - "array", - "null" - ] - }, - "top_rank_tags": { - "items": true, - "type": [ - "array", - "null" - ] - }, - "website": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
consensus2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ConsensusItem": { - "properties": { - "analyst_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "eps_estimate": { - "type": [ - "string", - "null" - ] - }, - "last_updated": { - "type": [ - "string", - "null" - ] - }, - "net_income_estimate": { - "type": [ - "string", - "null" - ] - }, - "period": { - "type": [ - "string", - "null" - ] - }, - "revenue_estimate": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "UsConsensusEstimate": { - "properties": { - "actual": { - "type": [ - "string", - "null" - ] - }, - "estimate": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "UsConsensusPeriod": { - "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" - } - }, - "properties": { - "ai_summary": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "items": { - "items": { - "$ref": "#/$defs/ConsensusItem" - }, - "type": [ - "array", - "null" - ] - }, - "list": { - "items": { - "$ref": "#/$defs/UsConsensusPeriod" - }, - "type": [ - "array", - "null" - ] - }, - "opt_reports": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "report": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
constituent1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
corp_action2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "CorpActionItem": { - "properties": { - "action_type": { - "type": [ - "string", - "null" - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "effective_date": { - "type": [ - "string", - "null" - ] - }, - "ratio": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/CorpActionItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
create_watchlist_group2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "id": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "id" - ], - "type": "object" -}New value: +null
- Changed
dca_check2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DcaCheckItem": { - "properties": { - "reason": { - "type": [ - "string", - "null" - ] - }, - "support_dca": { - "type": [ - "boolean", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/DcaCheckItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
dca_create1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
dca_history2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DcaExecution": { - "properties": { - "amount": { - "type": [ - "string", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "executions": { - "items": { - "$ref": "#/$defs/DcaExecution" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
dca_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DcaPlan": { - "properties": { - "amount": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "frequency": { - "type": [ - "string", - "null" - ] - }, - "next_execution_date": { - "type": [ - "string", - "null" - ] - }, - "plan_id": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "plans": { - "items": { - "$ref": "#/$defs/DcaPlan" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
dca_pause1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
dca_resume1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
dca_stats2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DcaStatsItem": { - "properties": { - "invested": { - "type": [ - "string", - "null" - ] - }, - "return_rate": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/DcaStatsItem" - }, - "type": [ - "array", - "null" - ] - }, - "plan_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "return_rate": { - "type": [ - "string", - "null" - ] - }, - "total_invested": { - "type": [ - "string", - "null" - ] - }, - "total_return": { - "type": [ - "string", - "null" - ] - }, - "total_value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
dca_stop1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
dca_update1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
delete_watchlist_group2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "deleted": { - "type": "boolean" - }, - "id": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "id", - "deleted" - ], - "type": "object" -}New value: +null
- Changed
deposits1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
depth2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DepthLevel": { - "properties": { - "order_num": { - "format": "int64", - "type": "integer" - }, - "position": { - "format": "int32", - "type": "integer" - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "volume": { - "format": "int64", - "type": "integer" - } - }, - "required": [ - "position", - "volume", - "order_num" - ], - "type": "object" - } - }, - "properties": { - "asks": { - "items": { - "$ref": "#/$defs/DepthLevel" - }, - "type": "array" - }, - "bids": { - "items": { - "$ref": "#/$defs/DepthLevel" - }, - "type": "array" - } - }, - "required": [ - "bids", - "asks" - ], - "type": "object" -}New value: +null
- Changed
dividend2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DividendItem": { - "properties": { - "amount": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "dividend_type": { - "type": [ - "string", - "null" - ] - }, - "ex_date": { - "type": [ - "string", - "null" - ] - }, - "pay_date": { - "type": [ - "string", - "null" - ] - }, - "record_date": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "UsDividendHistoryYear": { - "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" - }, - "UsDividendPayout": { - "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" - }, - "UsRecentDividends": { - "properties": { - "currency": { - "type": [ - "string", - "null" - ] - }, - "dividend_ttm": { - "type": [ - "string", - "null" - ] - }, - "dividend_yield_ttm": { - "format": "double", - "type": [ - "number", - "null" - ] - }, - "payouts": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "dividend_history": { - "items": { - "$ref": "#/$defs/UsDividendHistoryYear" - }, - "type": [ - "array", - "null" - ] - }, - "dividend_payout_history": { - "items": { - "$ref": "#/$defs/UsDividendPayout" - }, - "type": [ - "array", - "null" - ] - }, - "items": { - "items": { - "$ref": "#/$defs/DividendItem" - }, - "type": [ - "array", - "null" - ] - }, - "payout_ratios": { - "items": { - "$ref": "#/$defs/UsDividendHistoryYear" - }, - "type": [ - "array", - "null" - ] - }, - "recent_dividends": { - "anyOf": [ - { - "$ref": "#/$defs/UsRecentDividends" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -}New value: +null
- Changed
dividend_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "DividendDetailItem": { - "properties": { - "cash_dividend": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "ex_date": { - "type": [ - "string", - "null" - ] - }, - "pay_date": { - "type": [ - "string", - "null" - ] - }, - "period": { - "type": [ - "string", - "null" - ] - }, - "record_date": { - "type": [ - "string", - "null" - ] - }, - "stock_dividend": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "details": { - "items": { - "$ref": "#/$defs/DividendDetailItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
estimate_max_purchase_quantity2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "cash_max_qty": { - "type": "string" - }, - "margin_max_qty": { - "type": "string" - } - }, - "required": [ - "cash_max_qty", - "margin_max_qty" - ], - "type": "object" -}New value: +null
- Changed
etf_docs2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "EtfDocFile": { - "properties": { - "code": { - "type": [ - "string", - "null" - ] - }, - "file_name": { - "type": [ - "string", - "null" - ] - }, - "file_path": { - "type": [ - "string", - "null" - ] - }, - "format": { - "type": [ - "string", - "null" - ] - }, - "update_date": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "files": { - "items": { - "$ref": "#/$defs/EtfDocFile" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
exchange_rate1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
executive2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ExecutiveMember": { - "properties": { - "age": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "appointed_date": { - "type": [ - "string", - "null" - ] - }, - "biography": { - "type": [ - "string", - "null" - ] - }, - "compensation": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "members": { - "items": { - "$ref": "#/$defs/ExecutiveMember" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
filings1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
finance_calendar2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "FinanceCalendarBucket": { - "properties": { - "date": { - "type": [ - "string", - "null" - ] - }, - "infos": { - "items": { - "$ref": "#/$defs/FinanceCalendarEvent" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "FinanceCalendarEvent": { - "properties": { - "datetime": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/FinanceCalendarBucket" - }, - "type": [ - "array", - "null" - ] - }, - "partial": { - "type": [ - "boolean", - "null" - ] - }, - "partial_reason": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
financial_report2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous 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" -}New value: +null
- Changed
financial_report_key_metrics2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous 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" - }, - "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": { - "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" -}New value: +null
- Changed
financial_report_latest2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "eps": { - "type": [ - "string", - "null" - ] - }, - "gross_margin": { - "type": [ - "string", - "null" - ] - }, - "net_income": { - "type": [ - "string", - "null" - ] - }, - "period": { - "type": [ - "string", - "null" - ] - }, - "report_date": { - "type": [ - "string", - "null" - ] - }, - "revenue": { - "type": [ - "string", - "null" - ] - }, - "roe": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
financial_report_snapshot2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ForecastActual": { - "properties": { - "cmp": { - "type": [ - "string", - "null" - ] - }, - "yoy": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "fo_ebit": { - "anyOf": [ - { - "$ref": "#/$defs/ForecastActual" - }, - { - "type": "null" - } - ] - }, - "fo_eps": { - "anyOf": [ - { - "$ref": "#/$defs/ForecastActual" - }, - { - "type": "null" - } - ] - }, - "fo_revenue": { - "anyOf": [ - { - "$ref": "#/$defs/ForecastActual" - }, - { - "type": "null" - } - ] - }, - "report_desc": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
financial_statement2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous 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" -}New value: +null
- Changed
forecast_eps2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ForecastEpsItem": { - "properties": { - "analyst_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "eps_actual": { - "type": [ - "string", - "null" - ] - }, - "eps_estimate": { - "type": [ - "string", - "null" - ] - }, - "forecast_end_date": { - "type": [ - "string", - "null" - ] - }, - "forecast_start_date": { - "type": [ - "string", - "null" - ] - }, - "surprise_pct": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/ForecastEpsItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
fund_holder2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "FundHolderItem": { - "properties": { - "change": { - "type": [ - "string", - "null" - ] - }, - "fund_name": { - "type": [ - "string", - "null" - ] - }, - "fund_symbol": { - "type": [ - "string", - "null" - ] - }, - "ratio": { - "type": [ - "string", - "null" - ] - }, - "reported_at": { - "type": [ - "string", - "null" - ] - }, - "shares": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "fund_holders": { - "items": { - "$ref": "#/$defs/FundHolderItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
fund_positions2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "FundPosition": { - "properties": { - "cost_net_asset_value": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "current_net_asset_value": { - "type": "string" - }, - "holding_units": { - "type": "string" - }, - "net_asset_value_day": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "symbol_name": { - "type": "string" - } - }, - "required": [ - "symbol", - "symbol_name", - "currency", - "holding_units", - "current_net_asset_value", - "net_asset_value_day", - "cost_net_asset_value" - ], - "type": "object" - }, - "FundPositionChannel": { - "properties": { - "account_channel": { - "type": [ - "string", - "null" - ] - }, - "fund_info": { - "items": { - "$ref": "#/$defs/FundPosition" - }, - "type": "array" - } - }, - "required": [ - "fund_info" - ], - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/FundPositionChannel" - }, - "type": "array" - } - }, - "required": [ - "list" - ], - "type": "object" -}New value: +null
- Changed
grid_cancel1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
grid_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "expire_time": { - "type": [ - "string", - "null" - ] - }, - "grid_order_history": { - "items": true, - "type": [ - "array", - "null" - ] - }, - "grid_status": { - "type": [ - "string", - "null" - ] - }, - "grid_sub_orders": { - "items": true, - "type": [ - "array", - "null" - ] - }, - "lower_limit_price": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "settlement_currency": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "submitted_base_price": { - "type": [ - "string", - "null" - ] - }, - "suspend_reason": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "upper_limit_price": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
grid_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "GridOrderSummary": { - "properties": { - "created_at": { - "type": [ - "string", - "null" - ] - }, - "grid_status": { - "type": [ - "string", - "null" - ] - }, - "lower_limit_price": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "settlement_currency": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "stock_name": { - "type": [ - "string", - "null" - ] - }, - "submitted_base_price": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "total_buy_quantity": { - "type": [ - "string", - "null" - ] - }, - "total_profit_balance": { - "type": [ - "string", - "null" - ] - }, - "total_sell_quantity": { - "type": [ - "string", - "null" - ] - }, - "trigger_price_type": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "upper_limit_price": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "grid_order": { - "items": { - "$ref": "#/$defs/GridOrderSummary" - }, - "type": "array" - }, - "has_more": { - "type": "boolean" - } - }, - "required": [ - "grid_order", - "has_more" - ], - "type": "object" -}New value: +null
- Changed
grid_list_by_ids2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "GridOrderSummary": { - "properties": { - "created_at": { - "type": [ - "string", - "null" - ] - }, - "grid_status": { - "type": [ - "string", - "null" - ] - }, - "lower_limit_price": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "settlement_currency": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "stock_name": { - "type": [ - "string", - "null" - ] - }, - "submitted_base_price": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "total_buy_quantity": { - "type": [ - "string", - "null" - ] - }, - "total_profit_balance": { - "type": [ - "string", - "null" - ] - }, - "total_sell_quantity": { - "type": [ - "string", - "null" - ] - }, - "trigger_price_type": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "upper_limit_price": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "grid_orders": { - "items": { - "$ref": "#/$defs/GridOrderSummary" - }, - "type": "array" - } - }, - "required": [ - "grid_orders" - ], - "type": "object" -}New value: +null
- Removed
grid_questionnaire - Changed
grid_replace1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
grid_restart1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
grid_submit2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "dry_run": { - "type": "boolean" - }, - "next_step": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "preview": {} - }, - "required": [ - "dry_run" - ], - "type": "object" -}New value: +null
- Changed
grid_suspend1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
grid_symbol_info2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "GridBidSizeRule": { - "properties": { - "bid_size": { - "type": [ - "string", - "null" - ] - }, - "end_proceed": { - "type": [ - "string", - "null" - ] - }, - "str_proceed": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "bid_sizes": { - "items": { - "$ref": "#/$defs/GridBidSizeRule" - }, - "type": [ - "array", - "null" - ] - }, - "buy_lot_size": { - "type": [ - "string", - "null" - ] - }, - "channel_info": {}, - "last_done": { - "type": [ - "string", - "null" - ] - }, - "lot_size": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "sell_lot_size": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
grid_trigger_history2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "GridTriggerOrder": { - "properties": { - "action": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "executed_price": { - "type": [ - "string", - "null" - ] - }, - "executed_qty": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "trigger_at": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "has_more": { - "type": "boolean" - }, - "trigger_orders": { - "items": { - "$ref": "#/$defs/GridTriggerOrder" - }, - "type": "array" - } - }, - "required": [ - "trigger_orders", - "has_more" - ], - "type": "object" -}New value: +null
- Changed
history_candlesticks_by_date1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
history_candlesticks_by_offset1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
history_executions3 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Input schema / properties / us_limit / descriptionPrevious value: -"US accounts only, history_orders tool only: page size (default 20)."New value: +"US accounts only: page size (default 20). Ignored for\nAP accounts." - changed
Input schema / properties / us_page / descriptionPrevious value: -"US accounts only, history_orders tool only: page number (default 1)."New value: +"US accounts only: page number (default 1). Ignored for\nAP accounts (the region is inferred from the account — do not pass it)."
- Changed
history_market_temperature2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "MarketTemperatureResponse": { - "properties": { - "description": { - "type": "string" - }, - "sentiment": { - "format": "int32", - "type": "integer" - }, - "temperature": { - "format": "int32", - "type": "integer" - }, - "timestamp": { - "type": "string" - }, - "valuation": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "temperature", - "description", - "valuation", - "sentiment", - "timestamp" - ], - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/MarketTemperatureResponse" - }, - "type": "array" - }, - "type": { - "type": "string" - } - }, - "required": [ - "type", - "list" - ], - "type": "object" -}New value: +null
- Changed
history_orders3 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Input schema / properties / us_limit / descriptionPrevious value: -"US accounts only, history_orders tool only: page size (default 20)."New value: +"US accounts only: page size (default 20). Ignored for\nAP accounts." - changed
Input schema / properties / us_page / descriptionPrevious value: -"US accounts only, history_orders tool only: page number (default 1)."New value: +"US accounts only: page number (default 1). Ignored for\nAP accounts (the region is inferred from the account — do not pass it)."
- Changed
industry_peers2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IndustryPeersNode": { - "properties": { - "chg": { - "type": [ - "string", - "null" - ] - }, - "counter_id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "next": { - "items": { - "$ref": "#/$defs/IndustryPeersNode" - }, - "type": [ - "array", - "null" - ] - }, - "stock_num": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "ytd_chg": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IndustryPeersTop": { - "properties": { - "market": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "chain": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryPeersNode" - }, - { - "type": "null" - } - ] - }, - "top": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryPeersTop" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -}New value: +null
- Changed
industry_rank1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
industry_valuation2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IndustryValuationHistoryPoint": { - "properties": { - "date": { - "type": [ - "string", - "null" - ] - }, - "pb": { - "type": [ - "string", - "null" - ] - }, - "pe": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IndustryValuationItem": { - "properties": { - "dividend_yield": { - "type": [ - "string", - "null" - ] - }, - "history": { - "items": { - "$ref": "#/$defs/IndustryValuationHistoryPoint" - }, - "type": [ - "array", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "pb": { - "type": [ - "string", - "null" - ] - }, - "pe": { - "type": [ - "string", - "null" - ] - }, - "ps": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/IndustryValuationItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
industry_valuation_dist2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IndustryValuationDistribution": { - "properties": { - "current_percentile": { - "type": [ - "string", - "null" - ] - }, - "max": { - "type": [ - "string", - "null" - ] - }, - "median": { - "type": [ - "string", - "null" - ] - }, - "min": { - "type": [ - "string", - "null" - ] - }, - "p25": { - "type": [ - "string", - "null" - ] - }, - "p75": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IndustryValuationDistributions": { - "properties": { - "pb": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryValuationDistribution" - }, - { - "type": "null" - } - ] - }, - "pe": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryValuationDistribution" - }, - { - "type": "null" - } - ] - }, - "ps": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryValuationDistribution" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - } - }, - "properties": { - "distributions": { - "anyOf": [ - { - "$ref": "#/$defs/IndustryValuationDistributions" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -}New value: +null
- Changed
institution_rating2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "InstitutionRatingAnalyst": { - "properties": { - "buy": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "consensus_rating": { - "type": [ - "string", - "null" - ] - }, - "hold": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "outperform": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "sell": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "target_price": { - "type": [ - "string", - "null" - ] - }, - "underperform": { - "format": "int64", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "analyst": { - "anyOf": [ - { - "$ref": "#/$defs/InstitutionRatingAnalyst" - }, - { - "type": "null" - } - ] - }, - "instratings": {}, - "warnings": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
institution_rating_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "InstitutionRatingDetailItem": { - "properties": { - "analyst": { - "type": [ - "string", - "null" - ] - }, - "firm": { - "type": [ - "string", - "null" - ] - }, - "rating": { - "type": [ - "string", - "null" - ] - }, - "target_price": { - "type": [ - "string", - "null" - ] - }, - "timestamp": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "InstitutionRatingDetailTarget": { - "properties": { - "list": { - "items": { - "$ref": "#/$defs/InstitutionRatingDetailItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "target": { - "anyOf": [ - { - "$ref": "#/$defs/InstitutionRatingDetailTarget" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -}New value: +null
- Changed
institution_rating_history2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "EvaluateHistoryItem": { - "properties": { - "date": { - "type": [ - "string", - "null" - ] - }, - "firm": { - "type": [ - "string", - "null" - ] - }, - "new_rating": { - "type": [ - "string", - "null" - ] - }, - "old_rating": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "TargetHistoryItem": { - "properties": { - "analyst": { - "type": [ - "string", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "firm": { - "type": [ - "string", - "null" - ] - }, - "new_target": { - "type": [ - "string", - "null" - ] - }, - "old_target": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "evaluate_history": { - "items": { - "$ref": "#/$defs/EvaluateHistoryItem" - }, - "type": [ - "array", - "null" - ] - }, - "target_history": { - "items": { - "$ref": "#/$defs/TargetHistoryItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
institution_rating_industry_rank2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "InstitutionRatingIndustryRankItem": { - "properties": { - "buy_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "consensus_rating": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "sell_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "target_price": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/InstitutionRatingIndustryRankItem" - }, - "type": [ - "array", - "null" - ] - }, - "list": { - "items": { - "$ref": "#/$defs/InstitutionRatingIndustryRankItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
institutional_views2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "InstitutionalViewsMonth": { - "properties": { - "buy": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "hold": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "outperform": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "sell": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "total": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "underperform": { - "format": "int64", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "months": { - "items": { - "$ref": "#/$defs/InstitutionalViewsMonth" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
intraday1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
invest_relation2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "InvestRelationItem": { - "properties": { - "description": { - "type": [ - "string", - "null" - ] - }, - "event_date": { - "type": [ - "string", - "null" - ] - }, - "event_type": { - "type": [ - "string", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/InvestRelationItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
ipo_calendar2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IpoItem": { - "properties": { - "issue_price": { - "type": [ - "string", - "null" - ] - }, - "listing_date": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "min_lot_size": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "sub_end_date": { - "type": [ - "string", - "null" - ] - }, - "sub_start_date": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/IpoItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
ipo_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "eligibility": {}, - "profile": {}, - "timeline": {} - }, - "type": "object" -}New value: +null
- Changed
ipo_listed2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IpoListedItem": { - "properties": { - "first_day_close": { - "type": [ - "string", - "null" - ] - }, - "first_day_return": { - "type": [ - "string", - "null" - ] - }, - "issue_price": { - "type": [ - "string", - "null" - ] - }, - "listing_date": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "volume": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IpoListedMarketFeed": { - "properties": { - "items": { - "items": { - "$ref": "#/$defs/IpoListedItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "hk": { - "$ref": "#/$defs/IpoListedMarketFeed" - }, - "us": { - "$ref": "#/$defs/IpoListedMarketFeed" - } - }, - "required": [ - "hk", - "us" - ], - "type": "object" -}New value: +null
- Changed
ipo_order_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "allotted_quantity": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "submitted_at": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "total_amount": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
ipo_orders2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IpoOrderItem": { - "properties": { - "market": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "submitted_at": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "total_amount": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IpoOrdersFeed": { - "properties": { - "orders": { - "items": { - "$ref": "#/$defs/IpoOrderItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "history": { - "$ref": "#/$defs/IpoOrdersFeed" - }, - "orders": { - "$ref": "#/$defs/IpoOrdersFeed" - } - }, - "required": [ - "orders", - "history" - ], - "type": "object" -}New value: +null
- Changed
ipo_profit_loss2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IpoProfitLossItem": { - "properties": { - "cost": { - "type": [ - "string", - "null" - ] - }, - "current_value": { - "type": [ - "string", - "null" - ] - }, - "return_rate": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IpoProfitLossItems": { - "properties": { - "items": { - "items": { - "$ref": "#/$defs/IpoProfitLossItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "IpoProfitLossSummary": { - "properties": { - "total_cost": { - "type": [ - "string", - "null" - ] - }, - "total_return": { - "type": [ - "string", - "null" - ] - }, - "total_value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "$ref": "#/$defs/IpoProfitLossItems" - }, - "summary": { - "$ref": "#/$defs/IpoProfitLossSummary" - } - }, - "required": [ - "summary", - "items" - ], - "type": "object" -}New value: +null
- Changed
ipo_subscriptions2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "IpoItem": { - "properties": { - "issue_price": { - "type": [ - "string", - "null" - ] - }, - "listing_date": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "min_lot_size": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "sub_end_date": { - "type": [ - "string", - "null" - ] - }, - "sub_start_date": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "IpoMarketFeed": { - "properties": { - "items": { - "items": { - "$ref": "#/$defs/IpoItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "hk": { - "$ref": "#/$defs/IpoMarketFeed" - }, - "us": { - "$ref": "#/$defs/IpoMarketFeed" - } - }, - "required": [ - "hk", - "us" - ], - "type": "object" -}New value: +null
- Changed
macrodata2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous 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" -}New value: +null
- Changed
macrodata_indicators2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous 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" -}New value: +null
- Changed
margin_ratio2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "fm_factor": { - "type": "string" - }, - "im_factor": { - "type": "string" - }, - "mm_factor": { - "type": "string" - } - }, - "required": [ - "im_factor", - "mm_factor", - "fm_factor" - ], - "type": "object" -}New value: +null
- Changed
market_status2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "MarketStatusEntry": { - "properties": { - "delay_timestamp": { - "type": [ - "string", - "null" - ] - }, - "delay_trade_status": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "timestamp": { - "type": [ - "string", - "null" - ] - }, - "trade_status": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "market_time": { - "items": { - "$ref": "#/$defs/MarketStatusEntry" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
market_temperature2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "description": { - "type": "string" - }, - "sentiment": { - "format": "int32", - "type": "integer" - }, - "temperature": { - "format": "int32", - "type": "integer" - }, - "timestamp": { - "type": "string" - }, - "valuation": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "temperature", - "description", - "valuation", - "sentiment", - "timestamp" - ], - "type": "object" -}New value: +null
- Changed
news1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
news_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "NewsAuthor": { - "properties": { - "avatar": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "NewsImage": { - "properties": { - "height": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - }, - "width": { - "format": "int32", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "author": { - "anyOf": [ - { - "$ref": "#/$defs/NewsAuthor" - }, - { - "type": "null" - } - ] - }, - "body": { - "type": [ - "string", - "null" - ] - }, - "comments_count": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "images": { - "items": { - "$ref": "#/$defs/NewsImage" - }, - "type": [ - "array", - "null" - ] - }, - "likes_count": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "published_at": { - "type": [ - "string", - "null" - ] - }, - "shares_count": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "tickers": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
news_search1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
now1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
operating2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "OperatingItem": { - "properties": { - "metric_name": { - "type": [ - "string", - "null" - ] - }, - "period": { - "type": [ - "string", - "null" - ] - }, - "unit": { - "type": [ - "string", - "null" - ] - }, - "value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/OperatingItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
option_chain_expiry_date_list1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
option_chain_info_by_date1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
option_quote2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Input schema / properties / symbols / descriptionPrevious value: -"Security symbols, e.g. [\"700.HK\", \"AAPL.US\"]"New value: +"Option contract symbols, e.g. [\"AAPL230317P160000.US\"]. These are NOT\nplain stock symbols — get valid ones from `option_chain_info_by_date`'s\nper-strike `call.symbol`/`put.symbol` fields (after listing expiry\ndates with `option_chain_expiry_date_list`)."
- Changed
option_volume1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
option_volume_daily1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
order_detail4 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - added
Input schema / properties / is_attachedAdded value: +{ + "description": "Set to true when order_id is the ID of an attached take-profit /\nstop-loss leg rather than a parent order. The response is then that leg\nitself, with charge_detail null. Omit (or false) for parent orders. Has\nno effect for US accounts, which are served by the US order endpoint.", + "type": "boolean" +} - changed
Input schema / properties / order_id / descriptionPrevious value: -"Order ID (from today's orders or order history)"New value: +"Order ID to look up. A parent order ID, or (with is_attached=true) the\nID of an attached take-profit / stop-loss leg." - changed
Output schema / (root)Previous value: -{ - "$defs": { - "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" - } - }, - "properties": { - "currency": { - "type": [ - "string", - "null" - ] - }, - "current_millisecond": { - "type": [ - "string", - "null" - ] - }, - "executed_price": { - "type": [ - "string", - "null" - ] - }, - "executed_quantity": { - "type": [ - "string", - "null" - ] - }, - "expire_date": { - "type": [ - "string", - "null" - ] - }, - "last_done": { - "type": [ - "string", - "null" - ] - }, - "limit_offset": { - "type": [ - "string", - "null" - ] - }, - "msg": { - "type": [ - "string", - "null" - ] - }, - "order": { - "anyOf": [ - { - "$ref": "#/$defs/UsOrderDetail" - }, - { - "type": "null" - } - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "order_type": { - "type": [ - "string", - "null" - ] - }, - "outside_rth": { - "type": [ - "string", - "null" - ] - }, - "price": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": [ - "string", - "null" - ] - }, - "side": { - "type": [ - "string", - "null" - ] - }, - "status": { - "type": [ - "string", - "null" - ] - }, - "stock_name": { - "type": [ - "string", - "null" - ] - }, - "submitted_at": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "tag": { - "type": [ - "string", - "null" - ] - }, - "time_in_force": { - "type": [ - "string", - "null" - ] - }, - "trailing_amount": { - "type": [ - "string", - "null" - ] - }, - "trailing_percent": { - "type": [ - "string", - "null" - ] - }, - "trigger_at": { - "type": [ - "string", - "null" - ] - }, - "trigger_price": { - "type": [ - "string", - "null" - ] - }, - "trigger_status": { - "type": [ - "string", - "null" - ] - }, - "updated_at": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
participants1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
profit_analysis1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
profit_analysis_detail1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
profit_analysis_realized2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "RealizedPlCategory": { - "properties": { - "category": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "metrics": { - "items": { - "$ref": "#/$defs/RealizedPlMetric" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "RealizedPlMetric": { - "properties": { - "amount": { - "type": [ - "string", - "null" - ] - }, - "period": { - "format": "int32", - "type": [ - "integer", - "null" - ] - }, - "rate": { - "type": [ - "string", - "null" - ] - }, - "rate_unit": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "realized_pl_list": { - "items": { - "$ref": "#/$defs/RealizedPlCategory" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
quant_run1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
quote1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
rank_categories2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "RankFirstTag": { - "properties": { - "key": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "second_tags": { - "items": { - "$ref": "#/$defs/RankSecondTag" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "RankSecondTag": { - "properties": { - "key": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "first_tags": { - "items": { - "$ref": "#/$defs/RankFirstTag" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
rank_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "RankListItem": { - "properties": { - "amplitude": { - "type": [ - "string", - "null" - ] - }, - "chg": { - "type": [ - "string", - "null" - ] - }, - "five_day_chg": { - "type": [ - "string", - "null" - ] - }, - "industry": { - "type": [ - "string", - "null" - ] - }, - "inflow": { - "type": [ - "string", - "null" - ] - }, - "intro": { - "type": [ - "string", - "null" - ] - }, - "last_done": { - "type": [ - "string", - "null" - ] - }, - "market_cap": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "pre_post_chg": { - "type": [ - "string", - "null" - ] - }, - "pre_post_price": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - }, - "ten_day_chg": { - "type": [ - "string", - "null" - ] - }, - "this_year_chg": { - "type": [ - "string", - "null" - ] - }, - "turnover_rate": { - "type": [ - "string", - "null" - ] - }, - "twenty_day_chg": { - "type": [ - "string", - "null" - ] - }, - "volume_rate": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "lists": { - "items": { - "$ref": "#/$defs/RankListItem" - }, - "type": [ - "array", - "null" - ] - }, - "updated_at": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
replace_order16 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - added
Input schema / properties / attached_activate_order_typeAdded value: +{ + "description": "New order type for the triggered leg, e.g. \"LO\" or \"MO\".", + "type": "string" +} - added
Input schema / properties / attached_cancel_allAdded value: +{ + "description": "Set to true to cancel every attached take-profit / stop-loss leg of this\norder, leaving the order itself in place.", + "type": "boolean" +} - added
Input schema / properties / attached_expire_timeAdded value: +{ + "description": "New expiry for the attached leg as a unix timestamp in seconds.\nRequired when attached_time_in_force is GTD.", + "type": "string" +} - added
Input schema / properties / attached_main_idAdded value: +{ + "description": "ID of the parent order that owns the attached leg, when the leg is\nmodified on its own rather than through its parent.", + "type": "string" +} - added
Input schema / properties / attached_market_priceAdded value: +{ + "description": "Reference market price for the attached leg.", + "type": "string" +} - added
Input schema / properties / attached_order_typeAdded value: +{ + "description": "Attached leg to add or update: \"PROFIT_TAKER\", \"STOP_LOSS\" or \"BRACKET\".\nRequired unless the only attached change is attached_cancel_all.", + "type": "string" +} - added
Input schema / properties / attached_outside_rthAdded value: +{ + "description": "New outside-RTH setting for the triggered leg: \"RTH_ONLY\" / \"ANY_TIME\"\n/ \"OVERNIGHT\".", + "type": "string" +} - added
Input schema / properties / attached_profit_taker_idAdded value: +{ + "description": "ID of the existing take-profit leg to update (from\norder_detail's attached_orders[]). Omit to add a new leg.", + "type": "string" +} - added
Input schema / properties / attached_profit_taker_priceAdded value: +{ + "description": "New take-profit trigger price.", + "type": "string" +} - added
Input schema / properties / attached_profit_taker_submit_priceAdded value: +{ + "description": "New limit price for the take-profit leg.", + "type": "string" +} - added
Input schema / properties / attached_quantityAdded value: +{ + "description": "New quantity for the attached leg.", + "type": "string" +} - added
Input schema / properties / attached_stop_loss_idAdded value: +{ + "description": "ID of the existing stop-loss leg to update (from order_detail's\nattached_orders[]). Omit to add a new leg.", + "type": "string" +} - added
Input schema / properties / attached_stop_loss_priceAdded value: +{ + "description": "New stop-loss trigger price.", + "type": "string" +} - added
Input schema / properties / attached_stop_loss_submit_priceAdded value: +{ + "description": "New limit price for the stop-loss leg.", + "type": "string" +} - added
Input schema / properties / attached_time_in_forceAdded value: +{ + "description": "New time-in-force for the attached leg: \"Day\" / \"GTC\" / \"GTD\".", + "type": "string" +}
- Changed
screener_indicators2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ScreenerIndicator": { - "properties": { - "default_range": { - "anyOf": [ - { - "$ref": "#/$defs/ScreenerIndicatorRange" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "key": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "tech_values": {}, - "unit": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "ScreenerIndicatorGroup": { - "properties": { - "group_name": { - "type": [ - "string", - "null" - ] - }, - "indicators": { - "items": { - "$ref": "#/$defs/ScreenerIndicator" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "ScreenerIndicatorRange": { - "properties": { - "max": { - "type": [ - "string", - "null" - ] - }, - "min": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "groups": { - "items": { - "$ref": "#/$defs/ScreenerIndicatorGroup" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
screener_recommend_strategies2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ScreenerStrategyItem": { - "properties": { - "description": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "risk": { - "type": [ - "string", - "null" - ] - }, - "three_months_chg": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "strategys": { - "items": { - "$ref": "#/$defs/ScreenerStrategyItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
screener_search2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ScreenerResultIndicator": { - "properties": { - "key": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "unit": { - "type": [ - "string", - "null" - ] - }, - "value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "ScreenerResultItem": { - "properties": { - "indicators": { - "items": { - "$ref": "#/$defs/ScreenerResultIndicator" - }, - "type": [ - "array", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "items": { - "items": { - "$ref": "#/$defs/ScreenerResultItem" - }, - "type": [ - "array", - "null" - ] - }, - "total": { - "format": "int64", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
screener_strategy2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ScreenerStrategyFilter": { - "properties": { - "key": { - "type": [ - "string", - "null" - ] - }, - "max": { - "type": [ - "string", - "null" - ] - }, - "min": { - "type": [ - "string", - "null" - ] - }, - "tech_values": {} - }, - "type": "object" - }, - "ScreenerStrategyFilterGroup": { - "properties": { - "filters": { - "items": { - "$ref": "#/$defs/ScreenerStrategyFilter" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "filter": { - "anyOf": [ - { - "$ref": "#/$defs/ScreenerStrategyFilterGroup" - }, - { - "type": "null" - } - ] - }, - "market": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
screener_user_strategies2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ScreenerStrategyItem": { - "properties": { - "description": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "risk": { - "type": [ - "string", - "null" - ] - }, - "three_months_chg": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "strategys": { - "items": { - "$ref": "#/$defs/ScreenerStrategyItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
security_facts2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "AnomalyDetection": { - "properties": { - "anomaly_result": { - "type": "string" - }, - "significance_level": { - "type": "string" - }, - "test_method": { - "type": "string" - }, - "thresholds": { - "$ref": "#/$defs/AnomalyThresholds" - } - }, - "required": [ - "anomaly_result", - "significance_level", - "test_method", - "thresholds" - ], - "type": "object" - }, - "AnomalyThresholds": { - "properties": { - "high": { - "type": "string" - }, - "low": { - "type": "string" - }, - "medium": { - "type": "string" - } - }, - "required": [ - "low", - "medium", - "high" - ], - "type": "object" - }, - "FactDataSource": { - "properties": { - "icon": { - "type": "string" - }, - "source_name": { - "type": "string" - }, - "type": { - "$ref": "#/$defs/FactType" - }, - "url": { - "type": "string" - } - }, - "required": [ - "source_name", - "type", - "url", - "icon" - ], - "type": "object" - }, - "FactDirection": { - "enum": [ - "long", - "short", - "neutral", - "" - ], - "type": "string" - }, - "FactFactor": { - "properties": { - "anomaly_detection": { - "$ref": "#/$defs/AnomalyDetection" - }, - "factor_groups": { - "items": { - "type": "string" - }, - "type": "array" - }, - "long_short_direction": { - "$ref": "#/$defs/FactDirection" - }, - "name": { - "type": "string" - }, - "trigger_condition": { - "type": "string" - } - }, - "required": [ - "name", - "factor_groups", - "long_short_direction", - "trigger_condition", - "anomaly_detection" - ], - "type": "object" - }, - "FactNlInfo": { - "properties": { - "eli_explain": { - "$ref": "#/$defs/NlField" - }, - "invest_anal": { - "$ref": "#/$defs/NlField" - }, - "sub_title": { - "type": "string" - }, - "summary": { - "$ref": "#/$defs/NlField" - }, - "title": { - "type": "string" - } - }, - "required": [ - "title", - "sub_title", - "summary", - "invest_anal", - "eli_explain" - ], - "type": "object" - }, - "FactSymbol": { - "properties": { - "security_name": { - "type": "string" - }, - "symbol": { - "type": "string" - } - }, - "required": [ - "symbol", - "security_name" - ], - "type": "object" - }, - "FactType": { - "enum": [ - "News", - "Fundamental", - "Technical", - "Unknown" - ], - "type": "string" - }, - "NlField": { - "anyOf": [ - { - "items": { - "$ref": "#/$defs/NlTag" - }, - "type": "array" - }, - { - "type": "string" - } - ] - }, - "NlTag": { - "properties": { - "tag": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "tag", - "value" - ], - "type": "object" - }, - "SecurityFactItem": { - "properties": { - "data_source": { - "items": { - "$ref": "#/$defs/FactDataSource" - }, - "type": "array" - }, - "direction": { - "$ref": "#/$defs/FactDirection" - }, - "fact_id": { - "type": "string" - }, - "fact_type": { - "$ref": "#/$defs/FactType" - }, - "factors": { - "items": { - "$ref": "#/$defs/FactFactor" - }, - "type": "array" - }, - "nl_info": { - "$ref": "#/$defs/FactNlInfo" - }, - "occur_time": { - "type": "string" - }, - "symbols_info": { - "items": { - "$ref": "#/$defs/FactSymbol" - }, - "type": "array" - } - }, - "required": [ - "fact_id", - "fact_type", - "direction", - "occur_time", - "symbols_info", - "factors", - "data_source", - "nl_info" - ], - "type": "object" - } - }, - "properties": { - "facts": { - "items": { - "$ref": "#/$defs/SecurityFactItem" - }, - "type": "array" - } - }, - "required": [ - "facts" - ], - "type": "object" -}New value: +null
- Changed
security_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SecurityListItem": { - "properties": { - "name_cn": { - "type": "string" - }, - "name_en": { - "type": "string" - }, - "name_hk": { - "type": "string" - }, - "symbol": { - "type": "string" - } - }, - "required": [ - "symbol", - "name_cn", - "name_en", - "name_hk" - ], - "type": "object" - } - }, - "properties": { - "count": { - "format": "uint", - "minimum": 0, - "type": "integer" - }, - "items": { - "items": { - "$ref": "#/$defs/SecurityListItem" - }, - "type": "array" - }, - "page": { - "format": "uint", - "minimum": 0, - "type": "integer" - }, - "total": { - "format": "uint", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "total", - "page", - "count", - "items" - ], - "type": "object" -}New value: +null
- Changed
shareholder2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ShareholderItem": { - "properties": { - "change": { - "type": [ - "string", - "null" - ] - }, - "change_type": { - "type": [ - "string", - "null" - ] - }, - "institution": { - "type": [ - "string", - "null" - ] - }, - "ratio": { - "type": [ - "string", - "null" - ] - }, - "reported_at": { - "type": [ - "string", - "null" - ] - }, - "shares": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "shareholders": { - "items": { - "$ref": "#/$defs/ShareholderItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
shareholder_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ShareholderTrading": { - "properties": { - "accum_buy": { - "type": [ - "string", - "null" - ] - }, - "accum_sell": { - "type": [ - "string", - "null" - ] - }, - "net_buy": { - "type": [ - "string", - "null" - ] - }, - "period": { - "type": [ - "string", - "null" - ] - }, - "trading_details": { - "items": { - "$ref": "#/$defs/ShareholderTradingDetail" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "ShareholderTradingDetail": { - "properties": { - "filing_date": { - "type": [ - "string", - "null" - ] - }, - "security_type": { - "type": [ - "string", - "null" - ] - }, - "trading_date": { - "type": [ - "string", - "null" - ] - }, - "trading_price": { - "type": [ - "string", - "null" - ] - }, - "trading_shares": { - "type": [ - "string", - "null" - ] - }, - "trading_type": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "holding_periods": {}, - "holding_summary": {}, - "name": { - "type": [ - "string", - "null" - ] - }, - "owner_source": { - "type": [ - "string", - "null" - ] - }, - "trading_periods": {}, - "tradings": { - "items": { - "$ref": "#/$defs/ShareholderTrading" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
shareholder_top2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ShareholderTopHolder": { - "properties": { - "filing_date": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "object_id": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "percent_shares_held": { - "type": [ - "string", - "null" - ] - }, - "shares_changed": { - "type": [ - "string", - "null" - ] - }, - "shares_held": { - "type": [ - "string", - "null" - ] - }, - "title": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "ShareholderTopPeriod": { - "properties": { - "period": { - "type": [ - "string", - "null" - ] - }, - "share_holders": { - "items": { - "$ref": "#/$defs/ShareholderTopHolder" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "info": { - "items": { - "$ref": "#/$defs/ShareholderTopPeriod" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
sharelist_add1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
sharelist_create2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "description": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
sharelist_delete1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
sharelist_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SharelistConstituent": { - "properties": { - "change_rate": { - "type": [ - "string", - "null" - ] - }, - "last_done": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "constituents": { - "items": { - "$ref": "#/$defs/SharelistConstituent" - }, - "type": [ - "array", - "null" - ] - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
sharelist_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SharelistSummary": { - "properties": { - "creator": {}, - "description": { - "type": [ - "string", - "null" - ] - }, - "follower_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "is_owner": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "lists": { - "items": { - "$ref": "#/$defs/SharelistSummary" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
sharelist_popular2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SharelistSummary": { - "properties": { - "creator": {}, - "description": { - "type": [ - "string", - "null" - ] - }, - "follower_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "id": { - "type": [ - "string", - "null" - ] - }, - "is_owner": { - "type": [ - "boolean", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol_count": { - "format": "int64", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "lists": { - "items": { - "$ref": "#/$defs/SharelistSummary" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
sharelist_remove1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
sharelist_sort1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
short_margin1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
short_positions1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
short_trades2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ShortTradesItem": { - "properties": { - "balance": { - "type": [ - "string", - "null" - ] - }, - "close": { - "type": [ - "string", - "null" - ] - }, - "market_vol": { - "type": [ - "string", - "null" - ] - }, - "nasdaq_vol": { - "type": [ - "string", - "null" - ] - }, - "nyse_vol": { - "type": [ - "string", - "null" - ] - }, - "rate": { - "type": [ - "string", - "null" - ] - }, - "short_vol": { - "type": [ - "string", - "null" - ] - }, - "timestamp": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "data": { - "items": { - "$ref": "#/$defs/ShortTradesItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
signal_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SignalOutlook": { - "enum": [ - "Strong bullish", - "Bullish", - "Neutral", - "Bearish", - "Strong bearish", - "Unknown" - ], - "type": "string" - }, - "SignalStatus": { - "enum": [ - "Pending", - "Active", - "Deleted", - "AiFailed", - "FilteredByManual", - "AiSubmitFailed", - "Unknown" - ], - "type": "string" - } - }, - "properties": { - "analysis": {}, - "analysis_price": { - "format": "double", - "type": "number" - }, - "benchmark_price": { - "format": "double", - "type": "number" - }, - "company_name": { - "type": "string" - }, - "conservative_price": { - "format": "double", - "type": "number" - }, - "created_at": { - "type": "string" - }, - "expression": { - "type": "string" - }, - "id": { - "type": "string" - }, - "key_catalyst": { - "type": "string" - }, - "key_fact_id": { - "type": "string" - }, - "market": { - "type": "string" - }, - "optimistic_price": { - "format": "double", - "type": "number" - }, - "outlook": { - "$ref": "#/$defs/SignalOutlook" - }, - "outlook_desc": { - "type": "string" - }, - "recommend_by": { - "type": "string" - }, - "status": { - "$ref": "#/$defs/SignalStatus" - }, - "strategy_id": { - "type": "string" - }, - "strategy_name": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "title": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - }, - "required": [ - "id", - "symbol", - "company_name", - "market", - "title", - "summary", - "strategy_id", - "strategy_name", - "recommend_by", - "expression", - "key_fact_id", - "key_catalyst", - "analysis_price", - "conservative_price", - "benchmark_price", - "optimistic_price", - "outlook", - "outlook_desc", - "status", - "created_at", - "updated_at" - ], - "type": "object" -}New value: +null
- Changed
signals2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "SignalItem": { - "properties": { - "analysis": {}, - "analysis_price": { - "format": "double", - "type": "number" - }, - "benchmark_price": { - "format": "double", - "type": "number" - }, - "company_name": { - "type": "string" - }, - "conservative_price": { - "format": "double", - "type": "number" - }, - "created_at": { - "type": "string" - }, - "expression": { - "type": "string" - }, - "id": { - "type": "string" - }, - "key_catalyst": { - "type": "string" - }, - "key_fact_id": { - "type": "string" - }, - "market": { - "type": "string" - }, - "optimistic_price": { - "format": "double", - "type": "number" - }, - "outlook": { - "$ref": "#/$defs/SignalOutlook" - }, - "outlook_desc": { - "type": "string" - }, - "recommend_by": { - "type": "string" - }, - "status": { - "$ref": "#/$defs/SignalStatus" - }, - "strategy_id": { - "type": "string" - }, - "strategy_name": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "title": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - }, - "required": [ - "id", - "symbol", - "company_name", - "market", - "title", - "summary", - "strategy_id", - "strategy_name", - "recommend_by", - "expression", - "key_fact_id", - "key_catalyst", - "analysis_price", - "conservative_price", - "benchmark_price", - "optimistic_price", - "outlook", - "outlook_desc", - "status", - "created_at", - "updated_at" - ], - "type": "object" - }, - "SignalOutlook": { - "enum": [ - "Strong bullish", - "Bullish", - "Neutral", - "Bearish", - "Strong bearish", - "Unknown" - ], - "type": "string" - }, - "SignalStatus": { - "enum": [ - "Pending", - "Active", - "Deleted", - "AiFailed", - "FilteredByManual", - "AiSubmitFailed", - "Unknown" - ], - "type": "string" - } - }, - "properties": { - "signals": { - "items": { - "$ref": "#/$defs/SignalItem" - }, - "type": "array" - }, - "total": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "signals", - "total" - ], - "type": "object" -}New value: +null
- Changed
statement_export2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" -}New value: +null
- Changed
statement_list2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "StatementItem": { - "properties": { - "dt": { - "format": "int32", - "type": "integer" - }, - "file_key": { - "type": "string" - } - }, - "required": [ - "dt", - "file_key" - ], - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/StatementItem" - }, - "type": "array" - } - }, - "required": [ - "list" - ], - "type": "object" -}New value: +null
- Changed
static_info1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
stock_positions2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "StockPosition": { - "properties": { - "available_quantity": { - "type": "string" - }, - "cost_price": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "init_quantity": { - "type": [ - "string", - "null" - ] - }, - "market": { - "type": "string" - }, - "quantity": { - "type": "string" - }, - "symbol": { - "type": "string" - }, - "symbol_name": { - "type": "string" - } - }, - "required": [ - "symbol", - "symbol_name", - "quantity", - "available_quantity", - "currency", - "cost_price", - "market" - ], - "type": "object" - }, - "StockPositionChannel": { - "properties": { - "account_channel": { - "type": [ - "string", - "null" - ] - }, - "stock_info": { - "items": { - "$ref": "#/$defs/StockPosition" - }, - "type": "array" - } - }, - "required": [ - "stock_info" - ], - "type": "object" - }, - "UsAssetOverview": { - "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" - }, - "UsCashPosition": { - "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" - }, - "UsCryptoPosition": { - "properties": { - "average_cost": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "UsOptionPosition": { - "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" - }, - "UsStockPosition": { - "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" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/StockPositionChannel" - }, - "type": "array" - }, - "us_asset_overview": { - "anyOf": [ - { - "$ref": "#/$defs/UsAssetOverview" - }, - { - "type": "null" - } - ] - }, - "warnings": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "required": [ - "list" - ], - "type": "object" -}New value: +null
- Changed
submit_order11 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - added
Input schema / properties / attached_activate_order_typeAdded value: +{ + "description": "Order type the attached leg is submitted as once triggered, e.g. \"LO\"\n(then set the matching attached_*_submit_price) or \"MO\".", + "type": "string" +} - added
Input schema / properties / attached_expire_timeAdded value: +{ + "description": "Expiry of the attached leg as a unix timestamp in seconds (e.g.\n\"1767139200\"). Required when attached_time_in_force is GTD.", + "type": "string" +} - added
Input schema / properties / attached_order_typeAdded value: +{ + "description": "Attach a take-profit / stop-loss leg to this order: \"PROFIT_TAKER\"\n(take-profit only), \"STOP_LOSS\" (stop-loss only) or \"BRACKET\" (both).\nOmit for a plain order; every other attached_* field is ignored without\nit.", + "type": "string" +} - added
Input schema / properties / attached_outside_rthAdded value: +{ + "description": "Outside-RTH setting of the triggered leg: \"RTH_ONLY\" / \"ANY_TIME\" /\n\"OVERNIGHT\".", + "type": "string" +} - added
Input schema / properties / attached_profit_taker_priceAdded value: +{ + "description": "Take-profit trigger price. Required for PROFIT_TAKER and BRACKET.", + "type": "string" +} - added
Input schema / properties / attached_profit_taker_submit_priceAdded value: +{ + "description": "Limit price of the take-profit leg, for an LO attached_activate_order_type.", + "type": "string" +} - added
Input schema / properties / attached_stop_loss_priceAdded value: +{ + "description": "Stop-loss trigger price. Required for STOP_LOSS and BRACKET.", + "type": "string" +} - added
Input schema / properties / attached_stop_loss_submit_priceAdded value: +{ + "description": "Limit price of the stop-loss leg, for an LO attached_activate_order_type.", + "type": "string" +} - added
Input schema / properties / attached_time_in_forceAdded value: +{ + "description": "Time-in-force of the attached leg: \"Day\" / \"GTC\" / \"GTD\". Defaults to\nthe parent order's setting when omitted.", + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "dry_run": { - "type": "boolean" - }, - "next_step": { - "type": [ - "string", - "null" - ] - }, - "order_id": { - "type": [ - "string", - "null" - ] - }, - "preview": {} - }, - "required": [ - "dry_run" - ], - "type": "object" -}New value: +null
- Changed
today_executions1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
today_orders6 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - added
Input schema / properties / is_attachedAdded value: +{ + "description": "Only meaningful together with order_id: it says that order_id is the ID\nof an attached take-profit / stop-loss leg, and the response then\ncarries that leg itself as an order entry. On its own it does nothing,\nand it has no effect for US accounts either.", + "type": "boolean" +} - added
Input schema / properties / order_idAdded value: +{ + "description": "Filter by order ID: a parent order ID, or (with is_attached=true) the ID\nof an attached take-profit / stop-loss leg. Has no effect for\nUS accounts, which are served by the US order endpoint.", + "type": "string" +} - changed
Input schema / properties / us_action / descriptionPrevious value: -"US accounts only: filter by side, \"Buy\" or \"Sell\". Omit for all."New value: +"US accounts only: filter by side, \"Buy\" or \"Sell\". Omit for\nall. Ignored for AP accounts (the region is inferred from the\naccount — do not pass it)." - changed
Input schema / properties / us_limit / descriptionPrevious value: -"US accounts only: page size (default 20)."New value: +"US accounts only: page size (default 20). Ignored for\nAP accounts." - changed
Input schema / properties / us_page / descriptionPrevious value: -"US accounts only: page number (default 1)."New value: +"US accounts only: page number (default 1). Ignored for\nAP accounts."
- Changed
top_movers2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "TopMoverEvent": { - "properties": { - "alert_reason": { - "type": [ - "string", - "null" - ] - }, - "alert_type": { - "type": [ - "string", - "null" - ] - }, - "stock": { - "anyOf": [ - { - "$ref": "#/$defs/TopMoverStock" - }, - { - "type": "null" - } - ] - }, - "timestamp": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "TopMoverStock": { - "properties": { - "change": { - "type": [ - "string", - "null" - ] - }, - "intro": { - "type": [ - "string", - "null" - ] - }, - "labels": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "last_done": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "events": { - "items": { - "$ref": "#/$defs/TopMoverEvent" - }, - "type": [ - "array", - "null" - ] - }, - "next_params": {}, - "updated_at": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
topic1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
topic_create2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" -}New value: +null
- Changed
topic_create_reply2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "TopicAuthor": { - "properties": { - "avatar": { - "type": "string" - }, - "member_id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "member_id", - "name", - "avatar" - ], - "type": "object" - }, - "TopicImage": { - "properties": { - "lg": { - "type": "string" - }, - "sm": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "required": [ - "url", - "sm", - "lg" - ], - "type": "object" - } - }, - "properties": { - "author": { - "$ref": "#/$defs/TopicAuthor" - }, - "body": { - "type": "string" - }, - "comments_count": { - "format": "int32", - "type": "integer" - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "images": { - "items": { - "$ref": "#/$defs/TopicImage" - }, - "type": "array" - }, - "likes_count": { - "format": "int32", - "type": "integer" - }, - "reply_to_id": { - "type": "string" - }, - "topic_id": { - "type": "string" - } - }, - "required": [ - "id", - "topic_id", - "body", - "reply_to_id", - "author", - "images", - "likes_count", - "comments_count", - "created_at" - ], - "type": "object" -}New value: +null
- Changed
topic_detail2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "TopicAuthor": { - "properties": { - "avatar": { - "type": "string" - }, - "member_id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "member_id", - "name", - "avatar" - ], - "type": "object" - }, - "TopicImage": { - "properties": { - "lg": { - "type": "string" - }, - "sm": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "required": [ - "url", - "sm", - "lg" - ], - "type": "object" - } - }, - "properties": { - "author": { - "$ref": "#/$defs/TopicAuthor" - }, - "body": { - "type": "string" - }, - "comments_count": { - "format": "int32", - "type": "integer" - }, - "created_at": { - "type": "string" - }, - "description": { - "type": "string" - }, - "detail_url": { - "type": "string" - }, - "hashtags": { - "items": { - "type": "string" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "images": { - "items": { - "$ref": "#/$defs/TopicImage" - }, - "type": "array" - }, - "likes_count": { - "format": "int32", - "type": "integer" - }, - "shares_count": { - "format": "int32", - "type": "integer" - }, - "tickers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - }, - "topic_type": { - "type": "string" - }, - "updated_at": { - "type": "string" - }, - "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" - ], - "type": "object" -}New value: +null
- Changed
topic_replies1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
topic_search1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
trade_stats1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
trades1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
trading_days2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "half_trading_days": { - "items": { - "type": "string" - }, - "type": "array" - }, - "trading_days": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "trading_days", - "half_trading_days" - ], - "type": "object" -}New value: +null
- Changed
trading_session1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
update_watchlist_group2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "id": { - "format": "int64", - "type": "integer" - }, - "updated": { - "type": "boolean" - } - }, - "required": [ - "id", - "updated" - ], - "type": "object" -}New value: +null
- Changed
valuation2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ValuationMetric": { - "properties": { - "5yr_avg": { - "type": [ - "string", - "null" - ] - }, - "current": { - "type": [ - "string", - "null" - ] - }, - "desc": { - "type": [ - "string", - "null" - ] - }, - "industry_avg": { - "type": [ - "string", - "null" - ] - }, - "industry_median": { - "format": "double", - "type": [ - "number", - "null" - ] - }, - "metric": { - "format": "double", - "type": [ - "number", - "null" - ] - }, - "percentile": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "ValuationMetrics": { - "properties": { - "dividend_yield": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationMetric" - }, - { - "type": "null" - } - ] - }, - "pb": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationMetric" - }, - { - "type": "null" - } - ] - }, - "pe": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationMetric" - }, - { - "type": "null" - } - ] - }, - "ps": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationMetric" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - } - }, - "properties": { - "ai_summary": { - "type": [ - "string", - "null" - ] - }, - "ccy_symbol": { - "type": [ - "string", - "null" - ] - }, - "date": { - "type": [ - "string", - "null" - ] - }, - "indicator": { - "type": [ - "string", - "null" - ] - }, - "metrics": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationMetrics" - }, - { - "type": "null" - } - ] - }, - "range": { - "format": "int32", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
valuation_comparison2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ValuationComparisonHistoryPoint": { - "properties": { - "date": { - "type": [ - "string", - "null" - ] - }, - "pb": { - "type": [ - "string", - "null" - ] - }, - "pe": { - "type": [ - "string", - "null" - ] - }, - "ps": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - }, - "ValuationComparisonItem": { - "properties": { - "history": { - "items": { - "$ref": "#/$defs/ValuationComparisonHistoryPoint" - }, - "type": [ - "array", - "null" - ] - }, - "market_value": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": [ - "string", - "null" - ] - }, - "pb": { - "type": [ - "string", - "null" - ] - }, - "pe": { - "type": [ - "string", - "null" - ] - }, - "price_close": { - "type": [ - "string", - "null" - ] - }, - "ps": { - "type": [ - "string", - "null" - ] - }, - "symbol": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "list": { - "items": { - "$ref": "#/$defs/ValuationComparisonItem" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -}New value: +null
- Changed
valuation_history2 fields changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +} - changed
Output schema / (root)Previous value: -{ - "$defs": { - "ValuationHistoryBlock": { - "properties": { - "metrics": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationHistoryMetrics" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "ValuationHistoryMetrics": { - "properties": { - "dividend_yield": { - "items": { - "$ref": "#/$defs/ValuationHistoryPoint" - }, - "type": [ - "array", - "null" - ] - }, - "pb": { - "items": { - "$ref": "#/$defs/ValuationHistoryPoint" - }, - "type": [ - "array", - "null" - ] - }, - "pe": { - "items": { - "$ref": "#/$defs/ValuationHistoryPoint" - }, - "type": [ - "array", - "null" - ] - }, - "ps": { - "items": { - "$ref": "#/$defs/ValuationHistoryPoint" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - }, - "ValuationHistoryPoint": { - "properties": { - "timestamp": { - "type": [ - "string", - "null" - ] - }, - "value": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } - }, - "properties": { - "history": { - "anyOf": [ - { - "$ref": "#/$defs/ValuationHistoryBlock" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" -}New value: +null
- Changed
valuation_rank1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
warrant_issuers1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
warrant_list1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
warrant_quote1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
watchlist1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
- Changed
withdrawals1 field changed- added
Input schema / properties / _jqAdded value: +{ + "type": "string" +}
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
TDQS
Scored across 164 tools
Several tool families have nearly identical boundaries: financial_report and financial_statement accept essentially the same kind/report parameters, and the shareholder/institution_rating/valuation/profit_analysis groups each contain multiple overlapping variants. With 164 tools, an agent will frequently struggle to pick the intended one despite generally useful descriptions.
Large subdomains such as grid_*, dca_*, sharelist_*, and alert_* use consistent snake_case verb_noun patterns, but the overall set mixes bare-noun retrieval tools (quote, depth, news, now) with verb_noun actions and inconsistent variants like financial_report vs financial_statement and option_chain_info_by_date vs option_chain_expiry_date_list. It remains readable but does not follow a single convention.
164 tools is far beyond the 50+ threshold and makes the surface extremely hard to navigate, even for a full-featured brokerage platform. This feels like an unfiltered API dump rather than a curated MCP tool set.
The set covers nearly every lifecycle: orders, grid trading, DCA plans, alerts, watchlists, sharelists, account management, market data, financials, screeners, news, and community features. Minor dead ends exist (e.g., IPO subscriptions are listed but cannot be placed, and alerts cannot be edited in place), but no major workflow is entirely missing.
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
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.8-
- FlicenseDqualityDmaintenanceProvides 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.22176-
- 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.925Apache 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.-