saxo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAXO_ENV | No | `sim` (default). `live` is refused unless `SAXO_ALLOW_LIVE=1` is also set. | sim |
| SAXO_APP_KEY | Yes | The AppKey shown for your app in the Saxo developer portal. | |
| SAXO_TRADING | No | `disabled` (default) or `enabled`. Anything else is rejected at startup. | disabled |
| SAXO_ALLOW_LIVE | No | Set to `1` to allow `SAXO_ENV=live`. Without this, `live` is refused. | |
| SAXO_TOKEN_FILE | No | Optional. Where tokens are stored. Default `./.saxo-tokens.json`, created with mode `0600`. | ./.saxo-tokens.json |
| SAXO_REDIRECT_URI | Yes | Must match the redirect URL registered on the app. Must be `http://localhost:<port>/...`. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_account_summaryA | Basic information about the logged-in Saxo user, the client entity and all its accounts (AccountKey, currency, type). Call this first: other tools take an optional AccountKey from here. |
| get_balancesA | Cash balance, total account value, margin available/used, unrealised P&L and open position/order counts for one account (default) or the whole client. |
| get_positionsA | Open positions with open price, current price, exposure and profit/loss. view="individual" (default) lists every position; view="net" nets positions per instrument. |
| get_ordersA | LISTS currently open/working orders (type, amount, price, status, duration). This is strictly a viewing tool: this server cannot place, modify or cancel orders. |
| get_account_historyA | Historical account performance. report=summary (default) returns key figures, returns, allocation and trade statistics for the period; report=timeseries returns day-by-day account value / balance / time-weighted return series. Choose a standardPeriod (Month, Quarter, Year, AllTime) or an explicit fromDate/toDate. |
| get_transactionsA | Historical transaction log. type=trades (default): executed trades. type=bookings: cash bookings such as deposits, withdrawals, dividends, fees and settlements. type=order_activities: audit trail of order events (placed, filled, cancelled). Defaults to the last 30 days. |
| search_instrumentsA | Look up instruments by name, ticker or ISIN and get their Saxo UIC + AssetType, which the other market data tools need. Returns Identifier (the UIC), Symbol, Description, AssetType, ExchangeId and CurrencyCode. |
| get_instrument_detailsA | Contract specification for one instrument: description, currency, exchange, tick size / price decimals, lot and minimum trade size, trading sessions (trading hours) and other reference data. |
| get_instrument_priceA | Current informational quote for an instrument: bid, ask, mid, last traded, day open/high/low, net and percent change, market open flag and whether the price is delayed. Read-only; never creates an order. |
| get_chart_dataA | Historical price bars (open/high/low/close, volume where available; FX returns bid/ask OHLC). horizon is the bar size in minutes: 1, 5, 10, 15, 30, 60, 120, 240, 360, 480, 1440, 10080, 43200 (1440 = daily, 10080 = weekly, 43200 = monthly). Up to 1200 bars per call; pass time + mode to page further back. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool maps to a distinct resource and action: account metadata, balances, positions, orders, history, transactions, instrument search, contract details, current quote, and historical bars. The two historical tools are clearly differentiated as performance reports versus transaction logs.
All tool names follow a consistent lowercase verb_noun snake_case pattern, with get_* for lookups and search_instruments for query-based discovery. The naming is predictable and easy for an agent to navigate.
Ten tools is well-scoped for a read-only Saxo data server, covering account, portfolio, transaction, and market data without unnecessary redundancy. Each tool earns its place in the set.
The surface covers the full read-only lifecycle: discover instruments, fetch contract details, get current and historical prices, and retrieve account, position, order, and transaction data. No critical dead ends exist, and the only omitted actions like order placement are explicitly out of scope.