eToro MCP Server
NPM · ETORO-MCP-SERVER · SCANNED SEP 20
Connect AI assistants to eToro for portfolio analysis, market research, and trading.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to gabrielcerutti/etoro-mcp-server). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 145 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability74
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 1989 tokens (~56/item across 35 items; 35 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the eToro MCP Server server?
eToro MCP Server runs locally as an npm package, launched with npx -y etoro-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · etoro-mcp-server
claude mcp add gabrielcerutti-etoro-mcp-server -- npx -y etoro-mcp-server
{
"mcpServers": {
"gabrielcerutti-etoro-mcp-server": {
"command": "npx",
"args": [
"-y",
"etoro-mcp-server"
]
}
}
} {
"servers": {
"gabrielcerutti-etoro-mcp-server": {
"command": "npx",
"args": [
"-y",
"etoro-mcp-server"
]
}
}
} codex mcp add gabrielcerutti-etoro-mcp-server -- npx -y etoro-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gabrielcerutti-etoro-mcp-server": {
"type": "local",
"command": [
"npx",
"-y",
"etoro-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add gabrielcerutti-etoro-mcp-server --command npx --arg -y --arg etoro-mcp-server
mcp_servers:
gabrielcerutti-etoro-mcp-server:
command: "npx"
args: ["-y", "etoro-mcp-server"] {
"McpServers": {
"gabrielcerutti-etoro-mcp-server": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"etoro-mcp-server"
]
}
}
} assistant mcp add gabrielcerutti-etoro-mcp-server -t stdio -c npx -a -y etoro-mcp-server
{
"mcpServers": {
"gabrielcerutti-etoro-mcp-server": {
"command": "npx",
"args": [
"-y",
"etoro-mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 16 Sept 26 +1
- Security disclosure: unverified → fail ▼ functional
- 15 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −3
- Stability: pass → 0.77 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/etoro-mcp-server@1.1.4
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | gabrielcerutti/etoro-mcp-server |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/gabrielcerutti/etoro-mcp-server/.github/workflows/build-mcpb.yml@refs/heads/main |
| Rekor log index | 1393418968 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:703228ed919e69ed890525f372b860e58912a063c808461c01b682bf2d6acc439cde3ff1fafa418706857cd84be89d371ab5b6e25a95478f5c6246184 |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
etoro_add_watchlist_items Add items to watchlist ~51
Add one or more instruments to an existing watchlist.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentIds | array | yes | Instrument IDs to add (1–100) |
| watchlistId | integer | yes | Watchlist ID |
No output schema declared.
No examples provided.
etoro_cancel_order Cancel pending order ~34
Cancel a pending limit or market order before it executes.
| Name | Type | Req | Description |
|---|---|---|---|
| orderId | integer | yes | The order ID to cancel |
No output schema declared.
No examples provided.
etoro_close_position Close position ~101
Close an open position (fully or partially). Pass `unitsToDeduct` to close only part of the position; omit it to close fully.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentId | integer | – | Instrument ID of the position (optional; will be looked up from portfolio if omitted) |
| positionId | integer | yes | The position ID to close |
| unitsToDeduct | number | – | Number of units to close for partial close. Omit for full close. |
No output schema declared.
No examples provided.
etoro_create_comment Comment on a post ~50
Add a comment to an existing post on the eToro social feed.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Comment content / text |
| postId | string | yes | ID of the post to comment on |
No output schema declared.
No examples provided.
etoro_create_post Create feed post ~54
Create a new post on the eToro social feed. Optionally tag an instrument.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Post content / text |
| instrumentId | integer | – | Optional instrument ID to tag in the post |
No output schema declared.
No examples provided.
etoro_create_watchlist Create watchlist ~39
Create a new watchlist with the given name.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Name for the new watchlist (max 100 chars) |
No output schema declared.
No examples provided.
etoro_delete_watchlist Delete watchlist ~33
Delete a watchlist by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| watchlistId | integer | yes | Watchlist ID to delete |
No output schema declared.
No examples provided.
etoro_discover_users Discover popular investors ~154
Discover popular investors / traders on eToro filtered by performance, risk, and popularity.
| Name | Type | Req | Description |
|---|---|---|---|
| gainMax | number | – | Maximum gain percentage |
| gainMin | number | – | Minimum gain percentage |
| maxDailyRiskScoreMax | number | – | Max daily risk score (1–10, lower = safer) |
| maxMonthlyRiskScoreMax | number | – | Max monthly risk score (1–10, lower = safer) |
| page | integer | – | Page number (default 1) |
| pageSize | integer | – | Results per page (default 20) |
| period | string | yes | Performance period to filter by |
| popularInvestor | boolean | – | Filter to popular investors (eligible for copy) only |
No output schema declared.
No examples provided.
etoro_get_candles Get OHLCV candles ~100
Fetch OHLCV candle data for an instrument. Useful for technical analysis and historical price research.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number of candles to return (default 10, max 1000) |
| direction | string | – | Sort: 'asc' (oldest first) or 'desc' (newest first). Default: desc |
| instrumentId | integer | yes | Instrument ID |
| period | string | yes | Candle period |
No output schema declared.
No examples provided.
etoro_get_closing_prices Get daily closing prices ~20
Fetch historical closing prices across all instruments.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_copiers Get my copiers ~33
Get information about users currently copying the authenticated user's portfolio (country, club, copy duration, amount category).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_curated_lists Get curated lists ~22
Get eToro's curated / featured instrument lists.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_current_user Get authenticated user identity ~49
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_exchanges List exchanges ~19
List all stock exchanges eToro supports.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_industries List industries ~21
List all industry classifications used for stock instruments.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_instrument_feed Get instrument feed ~72
Get the social feed (posts, discussions) for a specific instrument.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentId | integer | yes | Instrument ID |
| offset | integer | – | Number of posts to skip (default 0) |
| take | integer | – | Number of posts to retrieve (default 20, max 100) |
No output schema declared.
No examples provided.
etoro_get_instrument_types List instrument types ~28
List all instrument types eToro supports (stocks, crypto, ETFs, etc.).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_instruments Get instrument details ~39
Get full details for one or more instruments by their IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentIds | array | yes | Array of instrument IDs (1–100) |
No output schema declared.
No examples provided.
etoro_get_orders List pending orders ~28
List all pending orders (limit orders, entry orders, etc.) for the current account.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_portfolio Get portfolio + P&L ~55
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_get_public_watchlists Get user's public watchlists ~38
Get publicly shared watchlists from a specific user.
| Name | Type | Req | Description |
|---|---|---|---|
| userId | integer | yes | User ID whose public watchlists to retrieve |
No output schema declared.
No examples provided.
etoro_get_rates Get live rates ~38
Get live bid/ask rates for one or more instruments.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentIds | array | yes | Array of instrument IDs (1–100) |
No output schema declared.
No examples provided.
etoro_get_trade_history Get closed-trade history ~95
Fetch the history of closed trades (entry/exit, P&L, fees, duration). Supports pagination. Primary data source for performance analysis, win-rate, and drawdown research.
| Name | Type | Req | Description |
|---|---|---|---|
| minDate | string | yes | Start date (YYYY-MM-DD). Required by the API. |
| page | integer | – | Page number (default 1) |
| pageSize | integer | – | Results per page (default 100) |
No output schema declared.
No examples provided.
etoro_get_user_feed Get user feed ~76
Get the social feed (posts, discussions) for a specific user by their eToro username.
| Name | Type | Req | Description |
|---|---|---|---|
| offset | integer | – | Number of posts to skip (default 0) |
| take | integer | – | Number of posts to retrieve (default 20, max 100) |
| username | string | yes | eToro username |
No output schema declared.
No examples provided.
etoro_get_user_performance Get user performance ~67
Get a user's trading performance (returns, risk score). Pass `period` for time-windowed performance; omit for lifetime/default summary.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | Optional performance period. Omit for the default lifetime summary. |
| username | string | yes | eToro username |
No output schema declared.
No examples provided.
etoro_get_user_portfolio Get user public portfolio ~35
Get a user's live public portfolio holdings (instruments, allocation).
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | yes | eToro username |
No output schema declared.
No examples provided.
etoro_get_user_profile Get user profile ~31
Get an eToro user's public profile by username.
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | yes | eToro username |
No output schema declared.
No examples provided.
etoro_get_user_trades Get user trade info ~54
Get a user's trade info (averages, win/loss stats) for a specific period.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | yes | Period to retrieve trade info for |
| username | string | yes | eToro username |
No output schema declared.
No examples provided.
etoro_get_watchlists List watchlists ~20
Get all watchlists for the current user.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
etoro_open_position Open position ~170
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).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | Investment amount in USD (mutually exclusive with `units`) |
| instrumentId | integer | yes | Instrument ID to trade |
| isBuy | boolean | yes | true = Buy/Long, false = Sell/Short |
| leverage | integer | – | Leverage multiplier (1, 2, 5, 10, etc.; max 400) |
| stopLossRate | number | – | Stop-loss price |
| takeProfitRate | number | – | Take-profit price |
| units | number | – | Number of units / shares / coins (mutually exclusive with `amount`) |
No output schema declared.
No examples provided.
etoro_place_limit_order Place limit order ~120
Place a limit / entry order that executes when the market reaches the specified price.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Investment amount in USD |
| instrumentId | integer | yes | Instrument ID |
| isBuy | boolean | yes | true = Buy/Long, false = Sell/Short |
| leverage | integer | – | Leverage multiplier (default 1) |
| rate | number | yes | Limit price at which the order should execute |
| stopLossRate | number | – | Stop-loss price |
| takeProfitRate | number | – | Take-profit price |
No output schema declared.
No examples provided.
etoro_remove_watchlist_item Remove item from watchlist ~44
Remove an instrument from a watchlist.
| Name | Type | Req | Description |
|---|---|---|---|
| instrumentId | integer | yes | Instrument ID to remove |
| watchlistId | integer | yes | Watchlist ID |
No output schema declared.
No examples provided.
etoro_rename_watchlist Rename watchlist ~50
Rename an existing watchlist.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | New name for the watchlist (max 100 chars) |
| watchlistId | integer | yes | Watchlist ID to rename |
No output schema declared.
No examples provided.
etoro_search_instruments Search instruments ~112
Search eToro instruments (stocks, crypto, ETFs, etc.) by keyword or exact ticker.
| Name | Type | Req | Description |
|---|---|---|---|
| exactSymbol | boolean | – | If true, match by exact ticker symbol (e.g. 'AAPL') instead of free-text |
| page | integer | – | Page number (default 1) |
| pageSize | integer | – | Results per page (default 10, max 100) |
| query | string | yes | Search keyword (e.g. 'AAPL', 'Bitcoin', 'Tesla') |
No output schema declared.
No examples provided.
etoro_set_default_watchlist Set default watchlist ~37
Mark a watchlist as the user's default.
| Name | Type | Req | Description |
|---|---|---|---|
| watchlistId | integer | yes | Watchlist ID to set as default |
No output schema declared.
No examples provided.
What is the eToro MCP Server server?
eToro MCP Server is listed in the public MCP registry as io.github.gabrielcerutti/etoro-mcp-server. Connect AI assistants to eToro for portfolio analysis, market research, and trading. This page covers its npm package (etoro-mcp-server).
Is the eToro MCP Server server safe to use?
eToro MCP Server scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the eToro MCP Server server expose?
eToro MCP Server exposes 35 tools: etoro_search_instruments, etoro_get_instruments, etoro_get_instrument_types, etoro_get_industries, etoro_get_exchanges, and 30 more. Their descriptions and schemas cost roughly 1,989 tokens of context every time the server is loaded.
Is the eToro MCP Server server still maintained?
eToro MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the eToro MCP Server server under?
eToro MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.