Skip to content

News / Announcements

MCP tool overview

futu_search_news

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_search_news"

Description:

Search news, notices, and ratings. Public QOT 3263. c2s_json uses Qot_GetSearchNews.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_search_news",
    "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_hot_news

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_hot_news"

Description:

Get structured hot news (page_size 1..50). 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_get_hot_news",
    "arguments": {
      "c2s_json": "{\"page_size\":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_get_latest_news

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_latest_news"

Description:

Get latest news with older/newer cursors and optional read-only filter sidecars. 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_get_latest_news",
    "arguments": {
      "c2s_json": "{\"page_size\":20,\"seq_mark\":\"\",\"page_flip\":0,\"tag_indexes\":[0],\"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_get_watchlist_news

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_watchlist_news"

Description:

Get news for explicit nonempty watchlist stock IDs; never falls back to the whole market. 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_get_watchlist_news",
    "arguments": {
      "c2s_json": "{\"page_size\":20,\"seq_mark\":\"\",\"stock_ids\":[7000700],\"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_get_watchlist_announcement

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_watchlist_announcement"

Description:

Get announcements for explicit stock IDs and notice types 0..5 (0 alone means all). 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_get_watchlist_announcement",
    "arguments": {
      "c2s_json": "{\"page_size\":20,\"seq_mark\":\"\",\"stock_ids\":[7000700],\"notice_types\":[0],\"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_get_watchlist_rating

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_watchlist_rating"

Description:

Get analyst reports for explicit nonempty stock IDs; never falls back to the whole market. 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_get_watchlist_rating",
    "arguments": {
      "c2s_json": "{\"page_size\":20,\"seq_mark\":\"\",\"stock_ids\":[7000700],\"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_get_stock_news

  • Scope: qot:read
  • Python SDK equivalent: —
  • Route: MCP JSON-RPC tools/call with name = "futu_get_stock_news"

Description:

Get per-stock news with cursor, dedup-ID, and request-level tracking echo. 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_get_stock_news",
    "arguments": {
      "c2s_json": "{\"stock_id\":7000700,\"page_size\":20,\"id_type\":1,\"seq_mark\":\"\",\"dedup_ids\":[],\"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"}.