Documentation
Deux produits, deux usages
Voir la documentation MCP
Un service indépendant pour connecter n'importe quel agent aux analyses Momentum publiques.
Consulter les outils →Deep CopyEn savoir plus et configurer Deep Copy
La plateforme de suivi et d'analyse de portefeuille, avec ses propres agents et sa configuration.
Découvrir Deep Copy →Connexion à Interactive Brokers
Deep Copy fonctionne en mode paper trading. Récupère les identifiants de ton compte simulé depuis le Client Portal Interactive Brokers, puis renseigne-les dans Deep Copy.
Ouvre le Client Portal Interactive Brokers
Rends-toi sur interactivebrokers.com et clique sur « Log In » → Client Portal.


Saisis tes identifiants
Entre ton username IBKR et ton mot de passe, puis clique sur Login.

Valide la double authentification (2FA)
IBKR demande une authentification à deux facteurs. Deux options s'offrent à toi :
Option A : QR Code. Scanne le QR code affiché avec l'application IBKR Mobile.

Option B : Challenge / Response. Note le code Challenge affiché, saisis-le dans l'app IBKR Mobile pour générer un code de réponse, puis entre ce code et clique sur Login.


Te voilà connecté au Client Portal
Le tableau de bord Interactive Brokers s'affiche : tu es authentifié.

Récupère les identifiants de ton compte simulé
Clique sur l'avatar en haut à droite → Paramètres.

Dans Configuration du compte, ouvre « Compte simulé ».

Tu y trouves le Nom d'utilisateur de trading simulé et le Numéro de compte : ce sont ces identifiants que Deep Copy utilise.

Renseigne ces identifiants dans Deep Copy
Retourne dans Deep Copy → Configuration. Saisis le username de trading simulé et son mot de passe, puis enregistre. Deep Copy déploie ensuite ta gateway dédiée et établit la session.

Tes identifiants sont chiffrés et stockés sur ta gateway dédiée, isolée des autres utilisateurs.
Quickstart
Le serveur Momentum expose publiquement les analyses et accepte les suggestions de tickers. Il est accessible sans clé API via l'endpoint HTTP suivant :
https://mcp.deepcopy.fr
Dans un client compatible MCP 2026-07-28, renseigne simplement cette URL. Le client gère ensuite la découverte du serveur et les en-têtes de transport.
{
"mcpServers": {
"deep-copy": {
"url": "https://mcp.deepcopy.fr"
}
}
}Protocole MCP 2026-07-28
Le serveur utilise le protocole MCP moderne en Streamable HTTP stateless. Chaque appel est un POST indépendant : il n'y a plus de handshakeinitialize, de session Mcp-Session-Id ou de requêtenotifications/initialized. Les informations du client et la version sont envoyées dans params._meta à chaque requête.
curl https://mcp.deepcopy.fr \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: server/discover' \
--data-raw '{
"jsonrpc": "2.0",
"id": "discover-1",
"method": "server/discover",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {"name": "mon-client", "version": "1.0.0"},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}'Pour un appel tools/call, le client reprend ces métadonnées et ajouteMcp-Name avec le nom de l'outil. Les valeurs des en-têtes doivent correspondre au contenu JSON-RPC ; le serveur rejette les requêtes incohérentes.
curl https://mcp.deepcopy.fr \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' \
-H 'Mcp-Name: list_analyses' \
--data-raw '{
"jsonrpc": "2.0",
"id": "list-1",
"method": "tools/call",
"params": {
"name": "list_analyses",
"arguments": {"ticker": "ASML", "limit": 10, "offset": 0},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {"name": "mon-client", "version": "1.0.0"},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}'Référence : spécification Streamable HTTP MCP 2026-07-28.
MCP Tools
list_analyses
Liste paginée des analyses avec filtre par ticker. Retourne un résumé : rating, prix, RSI, tendance, PE ratio.
- tickerstr | Nonedéfaut None
- Filtre par symbole (ex: AAPL)
- limitintdéfaut 50
- Nombre de résultats (max 200)
- offsetintdéfaut 0
- Décalage pour pagination
latest_analyses
Dernière analyse par ticker. Filtre optionnel par portfolio rating.
- tickerstr | Nonedéfaut None
- Un seul ticker
- ratingstr | Nonedéfaut None
- Comma-separated: Buy,Overweight,Hold,Underweight,Sell
get_analysis
Détail complet : indicateurs techniques, fondamentaux, sentiment, news, débats bull/bear, décision portfolio.
- analysis_idstr (UUID)requis
- Identifiant de l'analyse
get_recommendations
Recommandations actives filtrées par rating. Idéal pour « quoi acheter ? ».
- ratingstrdéfaut "Buy,Overweight"
- Ratings cibles
- limitintdéfaut 10
- Max résultats (max 100)
suggest_ticker
Propose un ticker à analyser. Une analyse ou suggestion existante est retournée sans nouvelle écriture ; sinon une suggestion unique est créée pour modération.
- symbolstrrequis
- Symbole boursier (ex: ASML)
- reasonstr | Nonedéfaut None
- Pourquoi ce ticker mérite une analyse
get_suggestion_status
Consulte la décision de modération associée à une suggestion.
- suggestion_idstr (UUID)requis
- Identifiant retourné par suggest_ticker
Une suggestion, pas un ordre d'analyse
Un ticker inconnu est sauvegardé une seule fois avec le statut pending. Si une analyse ou une proposition existe déjà, elle est renvoyée sans écriture. L'administrateur peut ensuite approuver ou rejeter une nouvelle proposition.
Proposition
Le LLM appelle suggest_ticker.
Modération
L’administrateur vérifie la demande.
Analyse
Un job est créé après approbation.