fetch
ChatGPTFetch a CMC resource returned by search, including the linked user account list or tool capability documents.
find_products
ChatGPTSearch by friendly market text with account_id and return display names plus the authoritative customer-facing product_type. Product keys and instrument IDs remain internal-only follow-up plumbing; on Spectre accounts, a public SB filter is translated to the technical CFD selector. If results are ambiguous, ask the user to choose using display names or friendly labels only.
get_account_summary
ChatGPTReturn balances and account value summary for one account_id.
get_accounts
ChatGPTList accounts visible to the linked user, including customer productTypes used to resolve the public category. Active wrapper settings are used internally and raw PMS wrapper codes are not returned. Call this before account-specific tools unless the user already supplied an account_id; if multiple accounts are returned, ask the user to choose.
get_delayed_price
ChatGPTReturn a 15-minute delayed price for one internal-only product key. Resolve the selected account first; on a Spectre account a public SB key is translated to the technical CFD selector. Use only when delayed data is acceptable or real-time pricing is unavailable; identify the product to users by friendly display name and safe product category. The result is labelled delayed, includes delay_minutes and as_at, includes the exact absolute bid/ask spread when both source prices parse, and reports current market_status and price_state separately when available.
get_delayed_prices
ChatGPTReturn 15-minute delayed prices for multiple regular products (non-FXR, non-options). Resolve the selected account first; public SB keys are translated to technical CFD selectors only for a uniquely resolved Spectre account. Each result is labelled delayed, includes delay_minutes and as_at, includes the exact absolute bid/ask spread when both source prices parse, and reports current market_status and price_state separately when available. Use product keys only for tool calls; identify products to users by friendly display name and safe product category.
get_ohlc_data
ChatGPTResolve a friendly product query or internal-only product key, apply the selected account's public wrapper mapping, fetch OHLC price history with the retained technical selector, and return normalized numeric candles only. Use only when the user explicitly asks for raw candle data instead of a visual.
get_option_position_details
ChatGPTReturn option contract characteristics and current analytics for one Option position selected by an internal-only position_ref from a fresh get_positions result. Keep position_ref internal. Treat product_type as authoritative rather than inferring from product_display_name; when available, include the friendly product name and returned option contract fields such as type, strike, and expiry. When analytics is present, use analytics.as_of as the source timestamp.
get_pending_orders
ChatGPTReturn account-level unfilled Pending Orders with the account-aware public product wrapper applied to product lookups. Keep Contingent Orders under their parent Pending Order. Excludes Positions and filled Position Orders.
get_position_orders
ChatGPTReturn the filled Position Orders for one selected Position using an internal-only position_ref from a fresh get_positions result. Apply the same account-aware public product wrapper as get_positions and include source stake context when available. Keep Contingent Orders under their parent Position Order. Excludes account-level Pending Orders.
get_positions
ChatGPTFetch fresh concise Position summaries and account totals, plus internal-only position_ref values for follow-up calls. Resolve the selected account's customer wrapper before mapping: Treat the structured product_type as authoritative: use it as the position category, never infer a category from product_display_name, and never expand “Cash” to CFD. Label Option rows as Option and keep identical display names with different product_type values distinct. Public product_type is the customer-facing category, while technical CFD selectors remain internal request plumbing for Spectre accounts. Position hierarchy: Account → Position Category → Position → Position Order → Contingent Order. Internal-only category mappings are CfdSbStandardPositions (standard-margin CFD/SB), CfdSbPrimePositions (prime-margin CFD/SB), InvestmentPositions (investment holdings), OptionPositions (options contracts), FxInstrumentPositions (traded pair/instrument), FxCurrencyPositions (one-currency exposure), and FxAggregatedCurrencyPositions (net currency exposure across instruments). use get_position_orders or get_pending_orders for those lifecycle details; never expand internal category names in user-facing text.
get_price
ChatGPTLive pricing is disabled for the delayed-pricing launch. Use get_delayed_price instead. This handler is retained for implementation compatibility; when enabled, resolve the selected account and translate a public SB key to the technical CFD selector only for a uniquely resolved Spectre account. Identify the product to users by friendly display name and safe product category.
get_price_history
ChatGPTReturn OHLC price history using internal-only instrument_id and the customer-facing product_type from find_products. Resolve the selected account first; on a Spectre account public SB is translated to the technical CFD selector before the upstream request. Use interval ONE_DAY for daily OHLC. Date bounds accept YYYY-MM-DD or UTC datetimes such as 2025-06-09T00:00:00Z. Never expose instrument_id to users.
get_prices
ChatGPTLive pricing is disabled for the delayed-pricing launch. Use get_delayed_prices instead. This handler is retained for implementation compatibility; when enabled, resolve the selected account and translate public SB keys to technical CFD selectors only for a uniquely resolved Spectre account. Identify products to users by friendly display name and safe product category.
get_products
ChatGPTReturn product details for known internal-only product IDs/product keys. Resolve the selected account before the request and keep technical selectors separate from the authoritative customer-facing product_type; on Spectre accounts, public SB selectors are translated to technical CFD keys. Use returned display names in user-facing text. Financial configuration is included when requested in fields; economics and conversion groups report source availability without inferred values. margin_rate values are Connect percentage strings (for example, "20" means 20%), all decimal values remain exact source strings, holding buy/sell charge directions follow bid/offer carry rates, effective_at is the source carry-rate date, and current/upcoming trading_hours retain source session dates in the requested timezone while typical_trading_hours requests return chronological, non-overlapping normalised session intervals. is_tradable, market_status, and price_state are separate availability signals.
render_candlestick_chart
ChatGPTResolve the selected account's customer wrapper, fetch fresh OHLC data when needed, and display a candlestick chart in the ChatGPT app UI. Use this as the terminal tool whenever the user asks to show, draw, plot, render, visualize, or create a candlestick/OHLC/price chart; do not answer with raw data only. Pass query/product_key/instrument_id inputs directly, or pass an existing chart object. The server resolves the chart title from the selected product. Public SB selectors on Spectre accounts are translated to technical CFD requests; the chart title remains the friendly product name. If a friendly query is ambiguous, call find_products and ask the user to choose from display names only. Product keys and instrument IDs are internal-only; do not repeat them to users. Single-product charts only: if the user asks to overlap or overlay charts for two different products, refuse because multi-product chart overlays are not supported; do not call this tool.
search
ChatGPTSearch CMC account, position, product, price, and tool resources. Use this to discover account data and CMC Connect tool capabilities.
submit_feedback
ChatGPTStore user-approved feedback with CMC for later analysis. This is the only write tool and requires no account_id. Invoke only after the user affirmatively approves the proposed text or explicitly asks to send, report, or tell CMC; a complaint, failure, silence, or continued conversation is not approval. Select general_feedback for feedback, feature_request for a requested capability, and issue when something did not work or produced an error.