Skip to content

Plates / Filter / Metadata

MCP tool overview

futu_get_suspend

  • Scope: qot:read
  • Python SDK equivalent: OpenQuoteContext.get_multi_points_history_kline (suspend flag)
  • Route: MCP JSON-RPC tools/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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/call with 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_fields is enabled — any field not listed above returns an unknown field error (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"}.