News / Announcements¶
futu_search_news¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith 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_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_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/callwith name ="futu_get_hot_news"
Description:
Get structured hot news (page_size 1..50). Controlled by --extended-data-reads; default ON; 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_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/callwith name ="futu_get_latest_news"
Description:
Get latest news with older/newer cursors and optional read-only filter sidecars. Controlled by --extended-data-reads; default ON; 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_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/callwith name ="futu_get_watchlist_news"
Description:
Get news for explicit nonempty watchlist stock IDs; never falls back to the whole market. Controlled by --extended-data-reads; default ON; 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_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/callwith name ="futu_get_watchlist_announcement"
Description:
Get announcements for explicit stock IDs and notice types 0..5 (0 alone means all). Controlled by --extended-data-reads; default ON; 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_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/callwith name ="futu_get_watchlist_rating"
Description:
Get analyst reports for explicit nonempty stock IDs; never falls back to the whole market. Controlled by --extended-data-reads; default ON; 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_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/callwith name ="futu_get_stock_news"
Description:
Get per-stock news with cursor, dedup-ID, and request-level tracking echo. Controlled by --extended-data-reads; default ON; 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_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"}.
futu_get_news_translation¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_news_translation"
Description:
Get news translation with lossless optional fields. Controlled by --extended-data-reads; default ON; 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_news_translation",
"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"}.
Additional contract:
- Scope:
qot:read - API:
GetNewsTranslation - REST:
POST /api/news-translation
Requires --extended-data-reads; ON by default; live backend UNVERIFIED.
| Field | Type | Required | Description |
|---|---|---|---|
c2s_json |
string | Yes | Requires news_id, is_translate, list_type, skip_image_crop, and extension_version=1. |
api_key |
string | No | Optional per-call key; HTTP still requires its Bearer identity. |
Full C2S fields, MCP argument example, responses and precision.
futu_get_platform_announcements¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_platform_announcements"
Description:
Platform announcements, complete or paginated; controlled by --extended-data-reads, enabled by default; not verified on a live 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_platform_announcements",
"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"}.
Additional contract:
API: GetPlatformAnnouncements
Scope: qot:read
Default ON, live UNVERIFIED. Request fields and snapshot semantics.
futu_get_platform_announcements_by_ids¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_platform_announcements_by_ids"
Description:
Query by announcement ID; controlled by --extended-data-reads, enabled by default; not verified on a live 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_platform_announcements_by_ids",
"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"}.
Additional contract:
API: GetPlatformAnnouncementsByIds
Scope: qot:read
Default ON, live UNVERIFIED. Request fields and snapshot semantics.
futu_get_news_push_settings¶
- Scope:
qot:read - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_get_news_push_settings"
Description:
News push settings; Writes return a separate ACK/read-back status; ambiguous outcomes are not resent. Enabled by default; not verified on a live 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_news_push_settings",
"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"}.
Additional contract:
API: GetNewsPushSettings
Scope: qot:read
Default ON; live UNVERIFIED. Fields, caller identity and ACK/readback receipts.
futu_set_news_push_settings¶
- Scope:
qot:write - Python SDK equivalent:
— - Route: MCP JSON-RPC
tools/callwith name ="futu_set_news_push_settings"
Description:
Set news push preferences; Writes return a separate ACK/read-back status; ambiguous outcomes are not resent. Enabled by default; not verified on a live 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_set_news_push_settings",
"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"}.
Additional contract:
API: SetNewsPushSettings
Scope: qot:write
Default ON; live UNVERIFIED. Fields, caller identity and ACK/readback receipts.