Plates / Filter / Metadata¶
futu_get_suspend¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_multi_points_history_kline (suspend flag) - Route: MCP JSON-RPC
tools/callwith name ="futu_get_suspend"
Description:
Suspend (trading halt) days for securities in a date range. Python SDK: OpenQuoteContext.get_suspend.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
symbols |
array of string | ✅ | stocks, code_list, symbol_list, security_list |
Array of security symbols in MARKET.CODE format (e.g. ["HK.00700", "HK.09988"]). Alias: stocks / code_list / symbol_list / security_list |
begin_time |
string | ✅ | begin, start_time, from |
Begin date (yyyy-MM-dd); alias: begin / start_time / from |
end_time |
string | ✅ | end, to |
End date (yyyy-MM-dd); alias: end / to |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_suspend",
"arguments": {
"symbols": [
"HK.00700"
],
"begin_time": "2026-01-01",
"end_time": "2026-12-31"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_stock_filter¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_stock_filter - Route: MCP JSON-RPC
tools/callwith name ="futu_get_stock_filter"
Description:
Stock filter / scanner (minimal: market + pagination). Python SDK: OpenQuoteContext.get_stock_filter. For condition-based filters (PE/cap/volume/etc.) use REST /api/stock-filter directly.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
i32 | ✅ | — | Market code accepted by the StockFilter backend: int 1=HK, 2=HK_FUTURE, 11=US, 21=SH/CN, 22=SZ, 31=SG, 41=JP, 61=MY; or string HK/HK_FUTURE/US/SH/SZ/CN/SG/JP/MY. |
begin |
i32 | ✓ default default |
offset, skip |
Pagination begin index (default 0); alias: offset / skip |
num |
i32 | ✓ default default_stock_filter_num |
count, max_count, req_count |
Max rows (0-200, default 50); alias: count / max_count / req_count |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).Runtime validation: this request type has a
validate()method that adds runtime required-field / enum-value validation on top of the JSON schema.
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_stock_filter",
"arguments": {
"market": "HK",
"begin": "2026-01-01",
"num": 50
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_ipo_list¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_ipo_list - Route: MCP JSON-RPC
tools/callwith name ="futu_get_ipo_list"
Description:
Upcoming / recent IPOs for a market. Python SDK: OpenQuoteContext.get_ipo_list. market: 1=HK, 2=HK_FUTURE, 11=US, 21=SH/CN, 22=SZ, 31=SG, 41=JP, 61=MY.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
i32 | ✅ | — | Market code accepted by the IPO list backend. Accept int (1=HK, 2=HK_FUTURE, 11=US, 21=SH/CN, 22=SZ, 31=SG, 41=JP, 61=MY) OR string ("HK" / "HK_FUTURE" / "US" / "SH" / "SZ" / "CN" / "SG" / "JP" / "MY"). |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).Runtime validation: this request type has a
validate()method that adds runtime required-field / enum-value validation on top of the JSON schema.
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_ipo_list",
"arguments": {
"market": "HK"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_list_plates¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_plate_list - Route: MCP JSON-RPC
tools/callwith name ="futu_list_plates"
Description:
List plates by market and set type (industry / region / concept / all).
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Market: HK|HK_FUTURE|US|SH|SZ |
plate_set |
string | ✓ default default_plate_set |
plate_set_type |
Plate set: all|industry|region|concept (default all); alias: plate_set_type. region only has backend data for SH/SZ; HK/HK_FUTURE/US returns an empty successful list like the native gateway. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_list_plates",
"arguments": {
"market": "HK",
"plate_set": "all"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_plate_stocks¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_plate_stock - Route: MCP JSON-RPC
tools/callwith name ="futu_plate_stocks"
Description:
List constituent securities of a plate.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
plate |
string | ✅ | symbol, code, plate_code |
Plate symbol, MARKET.CODE format (e.g. HK.LIST1001); alias: symbol / code / plate_code |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_plate_stocks",
"arguments": {
"plate": "HK.LIST1001"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_code_change¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_code_change - Route: MCP JSON-RPC
tools/callwith name ="futu_get_code_change"
Description:
Code change / temporary-ticker info (currently HK market only). Python SDK: OpenQuoteContext.get_code_change.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
symbols |
array of string | ✅ | stocks, code_list, symbol_list, security_list |
Security symbols to query (currently HK only); alias: stocks / code_list / symbol_list / security_list |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_code_change",
"arguments": {
"symbols": [
"HK.00700"
]
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_trading_days¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.request_trading_days - Route: MCP JSON-RPC
tools/callwith name ="futu_get_trading_days"
Description:
Trading days for a market in a date range. Python SDK: OpenQuoteContext.request_trading_days. Note: returns natural-day-minus-weekends-and-holidays, excluding temporary market closures.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
i32 | ✅ | — | Market code — Qot_Common.TradeDateMarket enum (i32, NOT QotMarket!): 1=HK, 2=US, 3=CN, 4=NorthboundSZ/SH, 5=SouthboundHK, 6=JP_Future, 7=SG_Future, 8=SG, 9=MY, 10=JP. Different from QotMarket (ipo_list/stock_filter use 1=HK 2=HK_FUTURE 11=US 21=SH 22=SZ). Legacy QotMarket aliases 11=US, 21=SH, 22=SZ are accepted for backward compatibility. |
begin_time |
string | ✅ | begin, start_time, from |
Begin date (yyyy-MM-dd); alias: begin / start_time / from |
end_time |
string | ✅ | end, to |
End date (yyyy-MM-dd); alias: end / to |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).Runtime validation: this request type has a
validate()method that adds runtime required-field / enum-value validation on top of the JSON schema.
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_trading_days",
"arguments": {
"market": "HK",
"begin_time": "2026-01-01",
"end_time": "2026-12-31"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_industrial_chain_list¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_industrial_chain_list - Route: MCP JSON-RPC
tools/callwith name ="futu_get_industrial_chain_list"
Description:
Get industrial-chain list. Public QOT 3427. c2s_json must be generated-proto JSON.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_industrial_chain_list",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_industrial_chain_detail¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_industrial_chain_detail - Route: MCP JSON-RPC
tools/callwith name ="futu_get_industrial_chain_detail"
Description:
Get industrial-chain detail. Public QOT 3428. c2s_json must be generated-proto JSON.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_industrial_chain_detail",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_industrial_chain_by_plate¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_industrial_chain_by_plate - Route: MCP JSON-RPC
tools/callwith name ="futu_get_industrial_chain_by_plate"
Description:
Get industrial-chain by plate. Public QOT 3429. c2s_json must be generated-proto JSON.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_industrial_chain_by_plate",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_industrial_plate_info¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_industrial_plate_info - Route: MCP JSON-RPC
tools/callwith name ="futu_get_industrial_plate_info"
Description:
Get industrial plate info. Public QOT 3430. c2s_json must be generated-proto JSON.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_industrial_plate_info",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_industrial_plate_stock¶
- Scope:
qot:read - Python SDK equivalent:
OpenQuoteContext.get_industrial_plate_stock - Route: MCP JSON-RPC
tools/callwith name ="futu_get_industrial_plate_stock"
Description:
Get industrial plate stocks. Public QOT 3431. c2s_json must be generated-proto JSON.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_industrial_plate_stock",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_indicator_list¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_indicator_list"
Description:
List local and current-server MyLang/Python indicators. Exact non-empty search may return owned or server-authorized formula source. Public QOT 3259.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_indicator_list",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_security_trading_sessions¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_security_trading_sessions"
Description:
Get exact server-provided trading days and sections for one code/exchange. Local extension v1.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_security_trading_sessions",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_market_trading_sessions¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_market_trading_sessions"
Description:
Batch exact server-provided trading days and sections for up to 500 market rows. Local extension v1.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_market_trading_sessions",
"arguments": {
"c2s_json": "…",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_etf_screen¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_etf_screen"
Description:
Screen ETFs with typed fields, intervals, multi-sort, and pagination. Requires --enable-v18-experimental-reads; default OFF; live backend unverified.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_etf_screen",
"arguments": {
"c2s_json": "{\"market\":1,\"data_from\":0,\"data_max_count\":20,\"need_fields\":[{\"field_id\":5}],\"extension_version\":1}",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_fund_screen¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_fund_screen"
Description:
Screen funds with the full typed 33-field filter and pagination contract. Requires --enable-v18-experimental-reads; default OFF; live backend unverified.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_fund_screen",
"arguments": {
"c2s_json": "{\"fund_types\":[1],\"risk_levels\":[1],\"currency_units\":[1],\"data_from\":0,\"data_max_count\":20,\"field_ids\":[3],\"source_types\":[1],\"extension_version\":1}",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_future_screen¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_future_screen"
Description:
Screen futures with typed factors, entitlement-derived crypto filtering, sort, and pagination. Requires --enable-v18-experimental-reads; default OFF; live backend unverified.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_future_screen",
"arguments": {
"c2s_json": "{\"conditions\":[{\"type_id\":1,\"factor_ids\":[1]}],\"data_from\":0,\"data_max_count\":20,\"extension_version\":1}",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_bond_screen¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_bond_screen"
Description:
Screen bonds with typed factors, ranges, source markets, sort, and pagination. Requires --enable-v18-experimental-reads; default OFF; live backend unverified.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
c2s_json |
string | ✅ | — | Official generated C2S JSON. Field names use generated proto serde snake_case, e.g. multi_legs / combo_legs / order_type. |
api_key |
string? | — | — | Optional per-call API key plaintext. HTTP scope mode still requires a valid Bearer on every /mcp request; this field overrides that identity for the tool handler. In stdio mode: tool argument > startup key. |
⚠️ Unknown fields:
deny_unknown_fieldsis enabled — any field not listed above returns anunknown fielderror (previously silently dropped).
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_bond_screen",
"arguments": {
"c2s_json": "{\"conditions\":[{\"type_id\":2}],\"data_from\":0,\"data_max_count\":20,\"source_types\":[1],\"extension_version\":1}",
"api_key": "optional-per-call-api-key"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.