feat(third_party): add eToro Trading plugin - #410
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
third_party/etoro-trading, a URL-only hosted-MCP plugin for eToro's account-scoped Public API server athttps://mcp.public-api.etoro.com. Same shape as the Coinbase (#354) and Robinhood (#409) ports: OAuth via dynamic client registration, no credential variables,minClientVersions.cursor: 3.13.0.Why a separate plugin from the vendor's
etoro: eToro's own marketplace plugin (etoro, publisher eToro) is a developer plugin — API-building rules, skills, and a documentation-search MCP atapi-portal.etoro.com/mcp. It does not connect to a user's account. This plugin targets the trading server eToro documents for Cursor in its Cursor integration guide; the README points API builders at the vendor plugin so the two are not confused.Server probe (2026-09-22):
initialize→ 401 withWWW-Authenticate: Bearer resource_metadata=https://mcp.public-api.etoro.com/.well-known/oauth-protected-resource.https://www.etoro.com: RFC 8414 metadata withregistration_endpoint https://www.etoro.com/api/sso/v1/register, PKCE S256,token_endpoint_auth_method: nonesupported.https://www.cursor.com/agents/mcp/oauth/callback,http://localhost:8787/callback) as a public client → 201, client issued withetoro-public:*scopes.prepare-trade/place-trade,prepare-close/place-close(confirmation-token gated),execute-read/execute-write, route catalog and specs.Risk notes in the README: the server places real trades on Real accounts; the confirmation-token gate and the agent-approval instructions in the tool descriptions are documented, along with the Demo-vs-Real distinction and the reach of
execute-write.Logo is the mark eToro publishes for its own Cursor marketplace listing, resized to 192×192.
Test plan
node scripts/validate-plugins.mjs→ "All plugins validated successfully."get-my-profile-and-scopes) from a Cursor client on the loopback redirect. eToro's docs mention no harness allowlist, unlike Coinbase.Note
Medium Risk
New integration enables live trading and broad
execute-writeAPI access on user accounts; risk is mostly operational/user-consent rather than changes to core repo code.Overview
Adds
etoro-tradingto the Cursor plugin marketplace: a newthird_party/etoro-tradingpackage that wires agents to eToro’s hosted MCP athttps://mcp.public-api.etoro.com(HTTP-onlymcp.json, OAuth/PKCE with no bundled secrets,minClientVersions.cursor: 3.13.0).Marketplace wiring:
etoro-tradingis registered in.cursor-plugin/marketplace.jsonand the rootREADME.mdintegrations table.Plugin contents: manifest,
mcp.json, README (install, Demo vs Real, prepare/place trade flow, distinction from eToro’s developeretoroplugin), CHANGELOG, and MIT license. Trading and account actions run on eToro’s remote server, not in this repo.Reviewed by Cursor Bugbot for commit bcf813a. Bugbot is set up for automated code reviews on this repo. Configure here.