MCP server wrapping the eToro public API for trading, market data, social feeds, watchlists, and user portfolio management
34 tools with consistent naming (verb_noun pattern) and descriptions present. However, descriptions are often generic (50-100 chars) and lack actionable context for LLM selection. Parameter schemas are well-typed with enums where appropriate (e.g., period, direction), but many lack detailed constraints (min/max for numeric params, format specs). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Mutually exclusive parameters (amount vs units in etoro_open_position) are documented but not enforced. No confirmation pattern for destructive operations despite 10+ DESTRUCTIVE tools.
Add one or more instruments to an existing watchlist.
Cancel a pending limit or market order before it executes.
Close an open position (fully or partially). Pass `unitsToDeduct` to close only part of the position; omit it to close fully.
Add a comment to an existing post on the eToro social feed.
Create a new post on the eToro social feed. Optionally tag an instrument.
Create a new watchlist with the given name.
Output schemas not documented. LLMs cannot predict response structure for any of 34 tools. Breaks downstream tool chaining and forces agents to guess field names.
No confirmation or dry-run pattern for 10 DESTRUCTIVE tools (open_position, close_position, place_limit_order, cancel_order, delete_watchlist, remove_watchlist_item). Agents can execute irreversible trades without verification.
Descriptions lack actionable context. 15+ tools have generic 50-char descriptions (e.g., 'List all instrument types eToro supports'). LLMs cannot distinguish when to call etoro_get_instrument_types vs etoro_get_instruments vs etoro_search_instruments.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Delete a watchlist by its ID.
Discover popular investors / traders on eToro filtered by performance, risk, and popularity.
Fetch OHLCV candle data for an instrument. Useful for technical analysis and historical price research.
Fetch historical closing prices across all instruments.
Get information about users currently copying the authenticated user's portfolio (country, club, copy duration, amount category).
Get eToro's curated / featured instrument lists.
Get the identity of the currently authenticated user: Global Customer ID (GCID), real account CID, demo account CID. Useful for self-referential queries and for resolving your own username.
List all stock exchanges eToro supports.
List all industry classifications used for stock instruments.
Get the social feed (posts, discussions) for a specific instrument.
List all instrument types eToro supports (stocks, crypto, ETFs, etc.).
Get full details for one or more instruments by their IDs.
List all pending orders (limit orders, entry orders, etc.) for the current account.
Get the current account's portfolio with P&L: credit, open positions (with current rates), unrealized P&L, total invested, exposure summary, and longest-held position. Respects demo/real mode.
Get publicly shared watchlists from a specific user.
Get live bid/ask rates for one or more instruments.
Get the social feed (posts, discussions) for a specific user by their eToro username.
Get a user's trading performance (returns, risk score). Pass `period` for time-windowed performance; omit for lifetime/default summary.
Get a user's live public portfolio holdings (instruments, allocation).
Get an eToro user's public profile by username.
Get a user's trade info (averages, win/loss stats) for a specific period.
Get all watchlists for the current user.
Open a new position on an instrument. Provide exactly one of `amount` (USD) or `units` (share/coin count). Respects the configured trading mode (demo or real).
Place a limit / entry order that executes when the market reaches the specified price.
Remove an instrument from a watchlist.
Rename an existing watchlist.
Search eToro instruments (stocks, crypto, ETFs, etc.) by keyword or exact ticker.
Mark a watchlist as the user's default.
Numeric parameters lack min/max constraints. etoro_get_candles accepts 'count' (default 10, max 1000) but no validation shown. etoro_discover_users accepts gainMin/gainMax with no range specified. LLMs can pass invalid values.
Error handling minimal. EtoroApiError class exists but no recovery guidance in tool descriptions. Agents cannot self-correct on 401, 404, 429 errors, they must ask the user or retry blindly.