Skip to content

System / Status

MCP tool overview

futu_get_global_state

  • Scope: qot:read
  • Python SDK equivalent: OpenQuoteContext.get_global_state
  • Route: MCP JSON-RPC tools/call with name = "futu_get_global_state"

Description:

Get gateway global state: per-market trading status, server version / time, quote & trade login status. Python SDK: OpenContext.get_global_state.

JSON-RPC call example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "futu_get_global_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_user_info

  • Scope: qot:read
  • Python SDK equivalent: OpenQuoteContext.get_user_info
  • Route: MCP JSON-RPC tools/call with name = "futu_get_user_info"

Description:

Get user info: nickname, per-market quote permissions, subscribe quota, history-K quota. Python SDK: OpenContext.get_user_info.

JSON-RPC call example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "futu_get_user_info",
    "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_quote_rights

  • Scope: qot:read
  • Python SDK equivalent: — (gateway user profile / quote-right display surface)
  • Route: MCP JSON-RPC tools/call with name = "futu_get_quote_rights"

Description:

Get quote-rights profile grouped like Futu OpenD GUI: HK/US/CN/SG/JP/crypto permissions, raw values, labels and quota. Set refresh=true to trigger request_highest_quote_right first.

Request arguments:

Field Type Required Alias Description
refresh boolean? — — If true, trigger request_highest_quote_right before querying

⚠️ 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_quote_rights",
    "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_delay_statistics

  • Scope: qot:read
  • Python SDK equivalent: OpenQuoteContext.get_delay_statistics
  • Route: MCP JSON-RPC tools/call with name = "futu_get_delay_statistics"

Description:

Get delay-statistics summary: counts of quote-push / request-reply / place-order samples. Python SDK: OpenContext.get_delay_statistics. For raw per-segment buckets use REST /api/delay-statistics.

JSON-RPC call example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "futu_get_delay_statistics",
    "arguments": {}
  }
}

Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.

futu_verification

  • Scope: auth:setup
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_verification"

Description:

Request or submit the current pre-login verification challenge. c2s_json uses Verification.C2S 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_verification",
    "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_ping

  • Scope: qot:read
  • Python SDK equivalent: — (gateway-local, no SDK equivalent)
  • Route: MCP JSON-RPC tools/call with name = "futu_ping"

Description:

Ping the Futu gateway. Returns RTT and connection status.

JSON-RPC call example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "futu_ping",
    "arguments": {}
  }
}

Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.

futu_push_subscriber_info

  • Scope: acc:read
  • Python SDK equivalent: — (daemon-only diagnostics)
  • Route: MCP JSON-RPC tools/call with name = "futu_push_subscriber_info"

Description:

Diagnostic — list active push subscriptions on this MCP server. Returns {total_count, subscriptions: [{session_id, acc_ids, age_secs}]}. Useful to verify whether futu_sub_acc_push registered, check auto-purge timing, or debug missing pushes.

JSON-RPC call example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "futu_push_subscriber_info",
    "arguments": {}
  }
}

Response: JSON text matching the corresponding REST endpoint / Python SDK. On failure MCP CallToolResult.is_error=true + content carries {"error": "...", "status": "error"}.