Trading Accounts (Read)¶
futu_list_accounts¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_acc_list - Route: MCP JSON-RPC
tools/callwith name ="futu_list_accounts"
Description:
List all trading accounts (real + simulate) visible to the gateway login.
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_list_accounts",
"arguments": {}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_funds¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.accinfo_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_funds"
Description:
Get account funds summary (total assets, cash, market value, buying power) for a given account + market.
Cash semantics: top-level cash field is backend's summary cash in the response currency (i.e. union_currency for futures/universal, primary market currency for legacy accounts). It is NOT the sum of cash_info_list[].cash across currencies (different currencies cannot be summed without FX conversion). For per-currency breakdown, read cash_info_list. To match Futu mobile app's 'total cash value in HKD' display, client-side compute sum(cash_info_list[i].cash * fx_rate(currency[i], HKD)) — daemon does not perform FX aggregation.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64? | — | — | Trading account ID (u64). Either acc_id OR card_num is required. card_num accepts the 4-digit suffix shown in the App or the full 16-digit card number. |
card_num |
string? | — | — | App-visible card number. Accepts 4-digit suffix or 16-digit full card number. Either acc_id OR card_num is required; if both are passed, daemon validates they refer to the same account. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
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. |
currency |
string? | — | — | Optional currency for fund response unit (HKD|USD|CNH|JPY|SGD|AUD|CAD|MYR|NZD). If omitted, daemon uses the broker/account default view currency. Explicit values are validated against the account; single-market accounts may ignore explicit currency and return their base currency. |
⚠️ 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_funds",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"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_positions¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.position_list_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_positions"
Description:
Get current positions (holdings) for an account in a given market.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA|CRYPTO) OR INT per Trd_Common.TrdMarket. |
acc_id |
u64? | — | — | Trading account ID (u64). Either acc_id OR card_num is required. |
card_num |
string? | — | — | App-visible card number. Accepts 4-digit suffix or 16-digit full card number. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
api_key |
string? | — | — | Optional per-call API key plaintext. |
currency |
string? | — | — | Optional position view currency (HKD|USD|CNH|JPY|SGD|AUD|CAD|MYR|NZD). Crypto accounts require an explicit view currency; non-crypto accounts may ignore it. |
option_strategy_view |
boolean | ✓ default default |
optionStrategyView |
Request option strategy/combo position view. Defaults to false. |
⚠️ 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_positions",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"api_key": "optional-per-call-api-key",
"option_strategy_view": false
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_orders¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.order_list_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_orders"
Description:
Get today's orders (including pending / filled / cancelled) for an account in a given market.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64? | — | — | Trading account ID (u64). Either acc_id OR card_num is required. card_num accepts the 4-digit suffix shown in the App or the full 16-digit card number. |
card_num |
string? | — | — | App-visible card number. Accepts 4-digit suffix or 16-digit full card number. Either acc_id OR card_num is required; if both are passed, daemon validates they refer to the same account. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
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. |
currency |
string? | — | — | Optional currency for fund response unit (HKD|USD|CNH|JPY|SGD|AUD|CAD|MYR|NZD). If omitted, daemon uses the broker/account default view currency. Explicit values are validated against the account; single-market accounts may ignore explicit currency and return their base currency. |
⚠️ 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_orders",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"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_deals¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.deal_list_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_deals"
Description:
Get today's deals / order fills for an account in a given market.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64? | — | — | Trading account ID (u64). Either acc_id OR card_num is required. card_num accepts the 4-digit suffix shown in the App or the full 16-digit card number. |
card_num |
string? | — | — | App-visible card number. Accepts 4-digit suffix or 16-digit full card number. Either acc_id OR card_num is required; if both are passed, daemon validates they refer to the same account. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
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. |
currency |
string? | — | — | Optional currency for fund response unit (HKD|USD|CNH|JPY|SGD|AUD|CAD|MYR|NZD). If omitted, daemon uses the broker/account default view currency. Explicit values are validated against the account; single-market accounts may ignore explicit currency and return their base currency. |
⚠️ 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_deals",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"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_margin_ratio¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_margin_ratio - Route: MCP JSON-RPC
tools/callwith name ="futu_get_margin_ratio"
Description:
Query margin ratio (long/short permissions, short-pool remaining, long/short initial margin ratios) by symbol list. Python SDK: OpenTradeContext.get_margin_ratio.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default; omitting or inventing an id fails. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
codes |
array of string | ✅ | symbols, code_list, symbol_list |
Symbols in MARKET.CODE format (e.g. HK.00700, US.AAPL); alias: symbols / code_list / symbol_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_margin_ratio",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"codes": [
"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_order_fee¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.order_fee_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_order_fee"
Description:
Query order fee breakdown (commission / platform fee / stamp duty) by order_id_ex list. Python SDK: OpenTradeContext.order_fee_query.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default; omitting or inventing an id fails. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
order_id_ex_list |
array of string | ✅ | order_ids_ex, order_ids |
Order_id_ex list (strings) — returned by place_order response; alias: order_ids_ex / order_ids |
⚠️ 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_order_fee",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"order_id_ex_list": []
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_max_trd_qtys¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.acctradinginfo_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_max_trd_qtys"
Description:
Max buy/sell/short/buy-back qtys before placing an order. Python SDK: OpenTradeContext.acctradinginfo_query. For NORMAL (limit) orders, price is required. order_type aligns with Trd_Common.OrderType enum (1=limit, 2=market, etc).
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default; omitting or inventing an id fails. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
order_type |
i32 | ✅ | — | Order type. Accepts both INTEGER (1=NORMAL/limit, 2=MARKET, 5=AUCTION, 6=ABSOLUTE_LIMIT, 7=SPECIAL_LIMIT) and STRING enum (NORMAL|MARKET|AUCTION|ABSOLUTE_LIMIT|SPECIAL_LIMIT). Example: 1 or "NORMAL". Enum double-accept: Accepts integer or OrderType enum string (NORMAL|LIMIT|MARKET|ABSOLUTE_LIMIT|AUCTION|AUCTION_LIMIT|SPECIAL_LIMIT) |
code |
string | ✅ | symbol, stock |
Security code WITHOUT market prefix (e.g. 00700 / AAPL); alias: symbol / stock |
price |
float | ✅ | — | Limit price (pass 0.0 for market orders) |
jp_acc_type |
i32? | — | jpAccType |
JP sub-account type (Trd_Common.TrdSubAccType / TrdHeader.jpAccType). Required for JP accounts unless order_id/position context supplies the sub-account. Alias: jpAccType. |
order_id |
u64? | — | — | Existing order_id (for modify-order max-qty calc, optional) |
⚠️ 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_max_trd_qtys",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"order_type": "NORMAL",
"code": "00700",
"price": 300.0,
"order_id": "123456789"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_history_orders¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.history_order_list_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_history_orders"
Description:
Query historical orders (filled / cancelled) with optional time range + code filter. Python SDK: OpenTradeContext.history_order_list_query.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default; omitting or inventing an id fails. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
code_list |
array of string | ✓ default default |
symbols, symbol_list |
Filter by codes (empty = all). Each item is bare code without market prefix. Alias: symbols / symbol_list |
begin_time |
string? | — | begin, start_time, from |
Begin time 'yyyy-MM-dd HH |
end_time |
string? | — | end, to |
End time 'yyyy-MM-dd HH |
⚠️ 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_history_orders",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"code_list": [
"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_history_deals¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.history_deal_list_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_history_deals"
Description:
Query historical deals / fills with optional time range + code filter. Python SDK: OpenTradeContext.history_deal_list_query.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
market |
string | ✅ | — | Trade market — accepts STRING (HK|US|CN|HKCC|FUTURES|SG|AU|JP|MY|CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 5=Futures, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default; omitting or inventing an id fails. |
env |
string | ✓ default default_env |
trd_env |
Trade environment: real|simulate (default real); alias: trd_env |
code_list |
array of string | ✓ default default |
symbols, symbol_list |
Filter by codes (empty = all). Each item is bare code without market prefix. Alias: symbols / symbol_list |
begin_time |
string? | — | begin, start_time, from |
Begin time 'yyyy-MM-dd HH |
end_time |
string? | — | end, to |
End time 'yyyy-MM-dd HH |
⚠️ 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_history_deals",
"arguments": {
"market": "HK",
"acc_id": 123456,
"env": "real",
"code_list": [
"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_flow_summary¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.acc_cash_flow_query (summary variant) - Route: MCP JSON-RPC
tools/callwith name ="futu_get_flow_summary"
Description:
Alias of futu_get_acc_cash_flow (MCP-REST naming symmetry with /api/flow-summary). Account cash-flow statement for a clearing date. Python SDK: OpenTradeContext.get_acc_cash_flow.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real); alias: trd_env |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default. |
market |
string | ✅ | — | Trade market — accepts STRING (HK / US / CN / HKCC / SG / AU / JP / MY / CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
clearing_date |
string | ✅ | date, query_date |
Clearing date (yyyy-MM-dd); queries flow entries for that day; alias: date / query_date |
direction |
i32? | — | flow_direction |
Direction: 1=InFlow, 2=OutFlow, omit for both; alias: flow_direction |
⚠️ 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_flow_summary",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"clearing_date": "2026-04-20",
"direction": 1
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_cash_log¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.cash_flow_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_cash_log"
Description:
Fetch detailed account cash log entries with richer filters than futu_get_acc_cash_flow. Native time range, business group / currency / keyword / symbol / direction filters, cursor-based pagination. When max_cnt is omitted the daemon uses the mobile default of 50.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64). Call futu_list_accounts first. |
market |
string? | — | — | Optional legacy market hint. Accepted for backward compatibility (HK/US/CN/HKCC/FUTURES/SG/CRYPTO/AU/JP/MY/CA/HKFUND/USFUND/SGFUND/MYFUND/JPFUND or ½/¾/⅚/⅞/15/111/112/113/123/124/125/126), but cash-log identity does not trust this field: daemon derives backend market from acc_id/account cache. |
begin_time |
u64? | — | — | Begin time (epoch seconds, optional) |
end_time |
u64? | — | — | End time (epoch seconds, optional) |
biz_group_id |
u32? | — | — | Business group ID filter (default all) |
biz_sub_group_id |
u32? | — | — | Business sub-group ID filter (optional; value from futu_get_biz_group sub_groups) |
in_out |
u32? | — | — | In/out direction: 1=in, 2=out, 0/omit=all |
keyword |
string? | — | — | Search keyword (optional) |
symbol |
string? | — | — | Stock symbol (e.g. AAPL.US, 00700.HK), exact match (optional) |
stock_id |
u64? | — | — | Backend stock_id filter (optional; use when available from upstream/account UI data) |
log_id |
string? | — | — | Cursor: log_id from previous response next_log_id (omit for first page) |
max_cnt |
u32? | — | — | Max entries per response (daemon uses mobile default 50 if omit) |
currency |
string? | — | — | Currency filter: CNY/HKD/USD/JPY/SGD (optional) |
⚠️ 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_cash_log",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"begin_time": "2026-01-01",
"end_time": "2026-12-31",
"symbol": "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_cash_detail¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.cash_flow_query (detail variant) - Route: MCP JSON-RPC
tools/callwith name ="futu_get_cash_detail"
Description:
Fetch a single cash log entry detail. Use after futu_get_cash_log; log_id comes from monthly_logs[].entries[].log_id.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) |
market |
string? | — | — | Optional legacy market hint; accepted for backward compatibility but ignored. Daemon derives backend market from acc_id/account cache. |
log_id |
string | ✅ | — | Cash log ID (from futu_get_cash_log response) |
⚠️ 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_cash_detail",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"log_id": "…"
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_biz_group¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_biz_group - Route: MCP JSON-RPC
tools/callwith name ="futu_get_biz_group"
Description:
Fetch cash log business group, currency, and direction metadata for client UI filters. Returns biz_groups with sub_groups, currencies, and directions.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) |
market |
string? | — | — | Optional legacy market hint; accepted for backward compatibility but ignored. Daemon derives backend market from acc_id/account cache. |
⚠️ 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_biz_group",
"arguments": {
"env": "real",
"acc_id": 123456,
"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_get_margin_info¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_margin_info - Route: MCP JSON-RPC
tools/callwith name ="futu_get_margin_info"
Description:
Per-account margin info: buying power, leverage, risk status, liquidity, HK margin fields, and mobile risk metadata. Supports HK / US / CN_AH markets (mobile cmd 3101/3102/3107). Complements futu_get_margin_ratio, which is per-security.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64). Call futu_list_accounts first. |
market |
string | ✅ | — | Market: HK / US / CN_AH (only these 3 supported; mobile cmd 3101/3102/3107). Other markets: use futu_get_margin_ratio (per-security ratio). |
⚠️ 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_margin_info",
"arguments": {
"env": "real",
"acc_id": 123456,
"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_get_account_flag¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_account_flag - Route: MCP JSON-RPC
tools/callwith name ="futu_get_account_flag"
Description:
Query account compliance flag (product access, risk disclosure, opt-in status). Common flag_id values: 5=US options, 22=derivatives disclosure, 10=fund KYC R1-R5, 16=PDT, 23=US OTC, 11=HK options. The response includes item_present and flag_value_present so clients can distinguish a missing flag record from an explicit flag_value=0.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
flag_id |
u32 | ✅ | — | Flag ID to query. Common: 5=US options acknowledgment, 8=options assessment, 10=fund KYC (R1–R5), 11=HK options acknowledgment, 16=PDT risk disclosure, 22=derivatives risk approval (combined), 23=US OTC, 24=HK options assessment, 25=algorithmic trading risk disclosure, 34=facial-recognition risk approval, 46=OpenAPI disclaimer. Full 36+ list in proto header. |
⚠️ 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_account_flag",
"arguments": {
"env": "real",
"acc_id": 123456,
"flag_id": 0
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_bond_total_asset¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_bond_total_asset - Route: MCP JSON-RPC
tools/callwith name ="futu_get_bond_total_asset"
Description:
Bond account total asset and P&L summary for HK/US/SG bond accounts. Returns total_asset, position_incomes, today_incomes, accrued_interest, and ccy.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
market |
string | ✅ | — | Market: HK / US / SG; aliases USA and SG_UNIVERSAL are accepted |
⚠️ 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_bond_total_asset",
"arguments": {
"env": "real",
"acc_id": 123456,
"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_get_bond_single_asset¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_bond_single_asset - Route: MCP JSON-RPC
tools/callwith name ="futu_get_bond_single_asset"
Description:
Single bond position for HK/US/SG bond accounts, including market value, quantity, cost, expiry, dividend schedule, accrued interest, legacy notice fields, notice_list, currency, and price.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
market |
string | ✅ | — | Market: HK / US / SG; aliases USA and SG_UNIVERSAL are accepted |
symbol |
string | ✅ | — | Bond symbol (bond code, e.g. HK1234 or 11000018) |
⚠️ 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_bond_single_asset",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"symbol": "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_bond_position_list¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_bond_position_list - Route: MCP JSON-RPC
tools/callwith name ="futu_get_bond_position_list"
Description:
Bond account position list for HK/US/SG bond accounts. Returns total and bond_list items with name, symbol, market value, quantity, price, cost, incomes, accrued interest, notice, call flag, and ccy.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
market |
string | ✅ | — | Market: HK / US / SG; aliases USA and SG_UNIVERSAL are accepted |
⚠️ 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_bond_position_list",
"arguments": {
"env": "real",
"acc_id": 123456,
"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_get_bond_answer_state¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_bond_answer_state - Route: MCP JSON-RPC
tools/callwith name ="futu_get_bond_answer_state"
Description:
Query whether the user needs to answer a suitability questionnaire before bond trading. Returns need_to_answer plus notice fields such as title, content, and confirm_url.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
market |
string | ✅ | — | Market: HK / US / SG; aliases USA and SG_UNIVERSAL are accepted |
symbol |
string | ✅ | — | Bond symbol (bond code, e.g. HK1234 or 11000018) |
⚠️ 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_bond_answer_state",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"symbol": "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_bond_trade_reminder¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.get_bond_trade_reminder - Route: MCP JSON-RPC
tools/callwith name ="futu_get_bond_trade_reminder"
Description:
Bond trade reminders for buy/sell availability, complex product, high risk, and pre-qualification. Returns ReminderItem fields for tradeable, complex_product, high_risk, sell_tradeable, and pre_qualification.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real) |
acc_id |
u64 | ✅ | — | Trading account ID (u64) for per-broker routing |
market |
string | ✅ | — | Market: HK / US / SG; aliases USA and SG_UNIVERSAL are accepted |
symbol |
string | ✅ | — | Bond symbol (bond code, e.g. HK1234 or 11000018) |
⚠️ 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_bond_trade_reminder",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"symbol": "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_token_state¶
- Scope:
acc:read - Python SDK equivalent:
— (gateway local token diagnostics) - Route: MCP JSON-RPC
tools/callwith name ="futu_get_token_state"
Description:
Query Futu Token / moomoo Token enable + bind state. Returns 4 fields: nn_token_enable, nn_token_bind, mm_token_enable, mm_token_bind (1=enabled/bound, 0=disabled/unbound). Use case: when /api/unlock-trade fails with -20011 ("please enable Futu Token"), call this tool first to diagnose which side is missing token binding.
JSON-RPC call example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "futu_get_token_state",
"arguments": {}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_acc_cash_flow¶
- Scope:
acc:read - Python SDK equivalent:
OpenTradeContext.acc_cash_flow_query - Route: MCP JSON-RPC
tools/callwith name ="futu_get_acc_cash_flow"
Description:
Account cash-flow statement for a clearing date. Python SDK: OpenTradeContext.get_acc_cash_flow.
Request arguments:
| Field | Type | Required | Alias | Description |
|---|---|---|---|---|
env |
string | ✓ default default_env |
trd_env |
Trade env: real / simulate (default real); alias: trd_env |
acc_id |
u64 | ✅ | — | Trading account ID (u64). ⚠️ Call futu_list_accounts first to discover — gateway does NOT infer a default. |
market |
string | ✅ | — | Trade market — accepts STRING (HK / US / CN / HKCC / SG / AU / JP / MY / CA) OR INT (1=HK, 2=US, 3=CN, 4=HKCC, 6=SG, 8=AU, 15=JP, 111=MY, 112=CA per Trd_Common.TrdMarket). |
clearing_date |
string | ✅ | date, query_date |
Clearing date (yyyy-MM-dd); queries flow entries for that day; alias: date / query_date |
direction |
i32? | — | flow_direction |
Direction: 1=InFlow, 2=OutFlow, omit for both; alias: flow_direction |
⚠️ 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_acc_cash_flow",
"arguments": {
"env": "real",
"acc_id": 123456,
"market": "HK",
"clearing_date": "2026-04-20",
"direction": 1
}
}
}
Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.
futu_get_combo_max_trd_qtys¶
- Scope:
acc:read - Python SDK equivalent:
OpenSecTradeContext.get_combo_max_trd_qtys - Route: MCP JSON-RPC
tools/callwith name ="futu_get_combo_max_trd_qtys"
Description:
Get maximum trade quantity for a combo-option order. Futu API v10.7: OpenSecTradeContext.get_combo_max_trd_qtys. c2s_json must include header.acc_id.
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_combo_max_trd_qtys",
"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_preview_order_impact¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_preview_order_impact"
Description:
Preview fee, margin and risk sidecars before placing a typed single, modify, combo or crypto order. Estimate only; 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_preview_order_impact",
"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_asset_trend¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_asset_trend"
Description:
Get the server-calculated customer and broker-area asset timeline. Local extension v1; experimental reads must be enabled.
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_asset_trend",
"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_yield_trend¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_yield_trend"
Description:
Get the server-calculated customer and broker-area yield timeline and benchmark comparisons. 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_yield_trend",
"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_return_calendar¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_return_calendar"
Description:
Get the server-calculated customer and broker-area monthly or yearly return calendar. 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_return_calendar",
"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_order_relations¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_order_relations"
Description:
Read a complete cached order relation graph by order or group id. Returns explicit not-available or stale status and never contacts a backend.
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_order_relations",
"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_position_corporate_actions¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_position_corporate_actions"
Description:
Read position-related stock and option-underlying corporate-action risk from a fresh account position snapshot. 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_get_position_corporate_actions",
"arguments": {
"c2s_json": "{\"header\":{\"trd_env\":1,\"acc_id\":900000001,\"trd_market\":2},\"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_algo_order_logs¶
- Scope:
acc:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_algo_order_logs"
Description:
Query algorithm parent/child execution reports with zero-based pagination or fetch_all. Requires --enable-v18-experimental-reads.
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_algo_order_logs",
"arguments": {
"c2s_json": "{\"header\":{\"trd_env\":1,\"acc_id\":900000001,\"trd_market\":2},\"algo_order_id\":\"server-algo-order-id\",\"page_index\":0,\"page_size\":50,\"fetch_all\":false,\"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"}.