Skip to content

Calendars / Macroeconomics

MCP tool overview

futu_get_financial_calendar

  • Scope: qot:read
  • Python SDK equivalent: Rust enhanced financial-calendar view
  • Route: MCP JSON-RPC tools/call with name = "futu_get_financial_calendar"

Description:

Read-only financial calendar view. Rust enhancement backed by the mobile calendar service; not a C++ FTAPI parity endpoint.

Request arguments:

Field Type Required Alias Description
begin_date string ✅ beginDate Start date in YYYYMMDD. Alias: beginDate
end_date string ✅ endDate Exclusive end date in YYYYMMDD. Alias: endDate
market_list array of i32 ✓ default default marketList Financial calendar market enum list: HK=1, US=2, CN=3, AU=4, SG=5, CA=6, JP=7, MY=8. Alias: marketList
pub_type_list array of i32 ✓ default default pubTypeList Publication type list: 0=regular/same day, 1=pre-market, 2=after-hours. Alias: pubTypeList
stock_type_list array of i32 ✓ default default stockTypeList Stock filter type list: 1=watchlist, 2=holding, 3=special watch. Alias: stockTypeList
watchlist_only boolean ✓ default default watchlistOnly Convenience switch for watchlist-only calendar view. Pass watchlist_stock_ids when you want client-cache-exact filtering. Alias: watchlistOnly
positions_only boolean ✓ default default positionsOnly Convenience switch for position-only calendar view. Pass holding_stock_ids when you want client-cache-exact filtering. Alias: positionsOnly
count i32? — — Result limit, 1-1000. Omit to use backend default.
ranking_type i32? — rankingType Ranking type. Alias: rankingType
estimate_type_list array of i32 ✓ default default_financial_calendar_estimate_type_list estimateTypeList Estimate type list: 1=EPS_GAAP, 2=REVENUE, 3=EBIT. Defaults to [1,2,3]. Alias: estimateTypeList
custom_filter_list array of FinancialCalendarCustomFilterReq ✓ default default customFilterList Custom filters. Alias: customFilterList
watchlist_stock_ids array of u64 ✓ default default watchlistStockIds Explicit watchlist stock_id list. Alias: watchlistStockIds
holding_stock_ids array of u64 ✓ default default holdingStockIds Explicit holding stock_id list. Alias: holdingStockIds

⚠️ 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_financial_calendar",
    "arguments": {
      "begin_date": "…",
      "end_date": "…",
      "market_list": [],
      "pub_type_list": [],
      "stock_type_list": [],
      "watchlist_only": false,
      "positions_only": false,
      "count": 100,
      "estimate_type_list": [],
      "custom_filter_list": [],
      "watchlist_stock_ids": [],
      "holding_stock_ids": []
    }
  }
}

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

futu_search_target_financial_calendar

  • Scope: qot:read
  • Python SDK equivalent: Rust enhanced financial-calendar target search
  • Route: MCP JSON-RPC tools/call with name = "futu_search_target_financial_calendar"

Description:

Target-stock financial calendar search. Rust enhancement backed by the mobile calendar service; not a C++ FTAPI parity endpoint.

Request arguments:

Field Type Required Alias Description
stock_id array of u64 ✅ stockId Backend stock_id list to query. Alias: stockId
market_list array of i32 ✓ default default marketList Financial calendar market enum list: HK=1, US=2, CN=3, AU=4, SG=5, CA=6, JP=7, MY=8. Alias: marketList
size i32 ✅ — Number of calendar rows to fetch; must be positive.
start i32? — — Pagination start offset. Alias: start

⚠️ 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_search_target_financial_calendar",
    "arguments": {
      "stock_id": [],
      "market_list": [],
      "size": 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_ipo_calendar

  • Scope: qot:read
  • Python SDK equivalent: OpenQuoteContext.get_ipo_list (calendar view)
  • Route: MCP JSON-RPC tools/call with name = "futu_get_ipo_calendar"

Description:

IPO calendar projection over get_ipo_list. Rust read-only enhancement for calendar-style IPO monitoring; not a separate C++ FTAPI endpoint.

Request arguments:

Field Type Required Alias Description
market i32 ✅ — Market code accepted by the IPO calendar projection. Accept int (1=HK, 2=HK_FUTURE, 11=US, 21=SH/CN, 22=SZ, 31=SG, 41=JP, 61=MY) OR string.
event_types array of string ✓ default default eventTypes IPO calendar event filter: list/apply/apply_start/apply_end/winning/approval/issue_confirm/price_confirm_start/price_confirm_end/inquiry_start/inquiry_end/draw. Alias: eventTypes
begin_date string? — beginDate Optional begin date YYYYMMDD. Alias: beginDate
end_date string? — endDate Optional end date YYYYMMDD. Alias: endDate

⚠️ 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_calendar",
    "arguments": {
      "market": "HK",
      "event_types": []
    }
  }
}

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

futu_get_earnings_calendar

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

Description:

Get earnings calendar data. Public QOT 3401. 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_earnings_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_macro_indicator_list

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

Description:

Get macro indicator list. Public QOT 3402. 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_macro_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_macro_indicator_history

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

Description:

Get macro indicator history. Public QOT 3403. 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_macro_indicator_history",
    "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_fed_watch_target_rate

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

Description:

Get FedWatch target-rate data. Public QOT 3404. 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_fed_watch_target_rate",
    "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_fed_watch_dot_plot

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

Description:

Get FedWatch dot-plot data. Public QOT 3405. 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_fed_watch_dot_plot",
    "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_dividend_calendar

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

Description:

Get dividend calendar data. Public QOT 3408. 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_dividend_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_economic_calendar

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

Description:

Get economic calendar data. Public QOT 3409. 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_economic_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"}.