eToro MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ETORO_ENV | No | demo or real. Must match the environment of the key pair. | demo |
| ETORO_API_KEY | Yes | Public API key (x-api-key). Required. | |
| ETORO_BASE_URL | No | Must be https on an etoro.com host. | https://public-api.etoro.com |
| ETORO_USER_KEY | Yes | User key (x-user-key). Required. | |
| ETORO_AUDIT_LOG | No | Append JSON-lines audit events to this file (also logged to stderr). | |
| ETORO_ENABLE_WRITE | No | Register the write tools. Needs a key with Write permission. | false |
| ETORO_MAX_ORDER_USD | No | Max exposure (amount x leverage) or transfer amount per action. | 100 |
| ETORO_ALLOW_TRANSFERS | No | Register the internal-transfer tool (real only, needs both switches above). | false |
| ETORO_MAX_SESSION_USD | No | Max total exposure executed until the server restarts. | 500 |
| ETORO_ALLOW_REAL_WRITE | No | Second switch required for write tools when ETORO_ENV=real. | false |
| ETORO_CONFIRM_TTL_SECONDS | No | How long a preview stays confirmable. | 300 |
| ETORO_REQUIRE_ELICITATION | No | Refuse writes unless the client can ask you to approve them. Default is true on real, false on demo. | |
| ETORO_MAX_WRITES_PER_MINUTE | No | Local brake on executed writes (eToro also rate-limits). | 5 |
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 |
|---|---|
| etoro_check_connectionA | Verifies that the configured API keys authenticate, which environments (demo/real) and permissions (read/write) the key has, and whether the account that answers for the configured environment really is that environment's account. Returns a result per check (never key values), a masked account reference, the server's mode (read-only or write-enabled, with its caps) and whether the MCP client can show confirmation prompts. Makes two small read requests and places nothing. |
| etoro_get_portfolioA | Aggregated snapshot of the demo account: account totals, open positions grouped by instrument, and copy-trading mirrors. For individual open positions with their position ids and pending orders use etoro_get_portfolio_breakdown. Reference: https://api-portal.etoro.com. |
| etoro_get_portfolio_breakdownA | Open positions (with position ids, instrument symbol, units, open rate, stop loss and take profit), pending orders and available credit for the demo account. The default view is compact; copied traders' positions are in the 'mirror' view, paged with limit and offset. Position ids from here are what etoro_prepare_close_position needs. For current profit/loss per position use etoro_get_pnl; for an account overview use etoro_get_portfolio. |
| etoro_get_pnlA | Unrealized profit/loss of the demo account: the total, and for each position its profit/loss, exposure, margin and current rate. Same views and paging as etoro_get_portfolio_breakdown; the default view is compact and copied traders' positions are in the 'mirror' view. |
| etoro_get_balancesB | Aggregated balances across the user's eToro accounts (trading, cash, ...), expressed in a display currency. Not environment-specific: it reports the account the key belongs to. |
| etoro_get_trade_historyA | Closed trades of the demo account since a date, with open/close rates, net profit and fees. Paginated. |
| etoro_get_orderA | Status and execution details of one order, found by orderId (returned when an order is placed) or by referenceId. Provide exactly one. Observed statuses include WaitingForMarket and Filled. A just-placed order can answer 404 for a few seconds before eToro registers it. |
| etoro_get_instrumentsA | Look up instruments by exact ticker symbols or by instrument ids, or list by type. Returns instrumentId, symbol, displayName, type and exchangeId. This is an exact lookup; for a name or partial text (for example 'apple') use etoro_search_instruments. ETF listings use exchange suffixes (for example EXMPL.L). Provide symbols or instrumentIds, not both. |
| etoro_search_instrumentsA | Free-text search of instruments by name or ticker (for example 'apple', 'S&P 500', 'EXMPL'). Returns up to |
| etoro_get_candlesA | Historical price candles (open, high, low, close, volume) for one instrument, from eToro's market data. Choose the interval (1m to 1w) and optionally a window with from and to (ISO 8601 with a timezone); without them eToro returns the latest |
| etoro_get_ratesA | Current bid and ask for up to 100 instruments by id. Prices are eToro's quotes, not necessarily the underlying venue's. |
| etoro_check_eligibilityA | What the demo account may do with instruments: available settlement types (real/cfd), leverage values, buy/sell and partial-close permissions, minimum position amounts, stop-loss/take-profit limits. Computes only; places nothing. Provide instrumentIds and/or symbols (max 100 combined). |
| etoro_get_trading_costsA | What-if cost breakdown (markup, market spread, transaction fee, overnight and weekend fees, stamp duty) for a hypothetical order. Computes only; places nothing. Amounts are in USD. For closing, pass the position ids. |
| etoro_list_price_alertsA | The user's active price alerts: instrument, target price, the bid when the alert was set, which way the price has to move to reach the target and how far it is, in percent. Alerts belong to the account, not to demo or real. Needs the key's price-alerts Read permission. Read-only. |
| etoro_list_watchlistsC | The user's watchlists with their items (instrument ids). |
| etoro_get_action_statusA | Where an action prepared by an etoro_prepare_* tool stands: pending (waiting for the user on the approval page), executing, executed (with eToro's answer, such as an order id), rejected, expired or failed. Only the user can execute an action. Also finds actions from earlier sessions in the local history. |
| etoro_get_action_historyA | Searches the local history of actions this server prepared and the user executed, rejected or let expire (persisted in a SQLite file, so it survives restarts and covers other sessions). Newest first. Free-text |
| etoro_open_historyA | Opens a local page in the user's browser where they can search and filter the history of actions (by text, date, environment, action and status), open the detail of each one, see today's usage against the daily limits and download a CSV. The page is read-only, listens on 127.0.0.1 only and its secret address expires after an hour. It returns nothing from the history: use etoro_get_action_history to read it yourself. |
| etoro_simulate_positionA | What would have happened if a position had been opened at the start of a window and followed the candles: a long (buy) or short (sellShort) of amountUsd with a leverage, an optional stop loss and take profit, held until one of them (or the margin) is hit, or until the end of the window. Returns the entry and exit prices and times, why it ended, the result in USD and as a percentage of the amount, and the worst and best moments in between. Uses eToro's historical candles (bid prices; no spread, fees, overnight costs or slippage). It places nothing and prepares nothing. A simulation of the rule you gave on past prices, not a prediction, a recommendation or financial advice. Nothing was sent to eToro and nothing was prepared. |
| etoro_backtestA | How a simple rule would have done over a window of past prices: 'buy_and_hold' (one purchase of amountUsd at the start) or 'dca' (amountUsd every everyDays days). Returns what was invested, the units and average cost, the value at the end, the result, the worst fall on the way and, for dca, the same total invested in one go at the start for comparison. Unleveraged, with eToro's historical candles (bid prices; no spread, fees, overnight costs or dividends). It places nothing and prepares nothing. A simulation of the rule you gave on past prices, not a prediction, a recommendation or financial advice. Nothing was sent to eToro and nothing was prepared. |
| etoro_search_investorsA | Finds investors (people others can copy) by performance and risk filters, with compact stats per investor: gain, risk scores, copiers, trades, win ratio, drawdown, leverage mix, most traded instrument. |
| etoro_get_investorA | Public information about one investor by username. |
| etoro_get_cash_transactionsA | Movements of one of the user's eToro cash accounts (card payments, bank and internal transfers), newest first, with type, direction, status, amount and currency. Needs the cash account's id (see etoro_get_balances, accounts of type Cash). Not environment-specific: it reports the account the key belongs to. Follow |
| etoro_get_balance_historyA | How the user's total eToro balance evolved day by day between two dates (cash, invested amount, profit and loss, total), in a display currency, with a summary (start, end, change, lowest, highest). Not environment-specific: it reports the account the key belongs to. The change in total balance includes deposits and withdrawals, not only gains and losses. Defaults to the last 30 days; eToro limits the range. Set includeAccounts for the per-account detail. Read-only. |
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 24 tools
Most tools have clearly distinct purposes, such as exact vs free-text instrument lookup and raw candles vs simulations. The main overlap is among portfolio-related reads (get_portfolio, get_portfolio_breakdown, get_pnl) and balance-related reads, but the descriptions provide enough guidance to distinguish them.
All tool names use a consistent etoro_ snake_case prefix, mostly following a verb_noun pattern such as get_portfolio_breakdown, search_instruments, list_price_alerts and check_connection. The few verb-only or noun-verb forms like backtest and open_history are still predictable and readable.
24 tools is on the heavy side for a single MCP server and includes multiple closely related read tools across market data, account snapshots, simulations, and history. The count is not absurd given the broad eToro domain, but it is borderline and feels larger than necessary for the apparent surface.
The descriptions repeatedly reference etoro_prepare_* tools for preparing actions, closing positions, and placing orders, but none of those tools are present in the set. Core trading lifecycle operations such as prepare/execute order actions, position closing, and alert/watchlist management are missing, creating dead ends for an eToro trading server.