Server MCP di AlgoVesta: lascia che Claude, ChatGPT, Cursor e Gemini facciano trading sui tuoi account exchange reali e MetaTrader 5
Di cosa si tratta: AlgoVesta gestisce un server Model Context Protocol (MCP) ospitato che offre a un assistente AI venti strumenti di trading reali tramite un unico link HTTPS. Incolla quel singolo link in Claude, ChatGPT, Cursor, Claude Code, Gemini CLI o qualsiasi client compatibile con MCP, e l'assistente potrà leggere i saldi, aprire e chiudere posizioni, spostare stop-loss e take-profit, e verificare le proprie azioni su 16 exchange crypto e il forex MetaTrader 5 contemporaneamente — usando le impostazioni di rischio che hai già salvato in AlgoVesta, dietro un muro di policy lato server che nessun prompt può aggirare. Ogni connessione parte con un saldo virtuale di $5.000 e ogni azione restituisce una ricevuta firmata ed25519.
Il Model Context Protocol è uno standard aperto per connettere assistenti AI a sistemi esterni. La maggior parte dei server MCP legati al trading trasmette dati di mercato in una finestra di chat. Questo esegue: è un livello di instradamento degli ordini con un motore di rischio deterministico davanti ad esso, e l'AI è il chiamante — mai l'autorità.
Avvio rapido
La configurazione richiede tre passaggi e nessun codice. L'intero flusso si trova nella scheda MCP Connection del tuo pannello AlgoVesta.
Apri la scheda MCP Connection e genera una chiave. Le nuove chiavi utilizzano per impostazione predefinita l'ambito paper . Il link completo viene mostrato una sola volta — copialo in quel momento.
Incolla il link nel tuo client AI come server MCP personalizzato. Nessuna chiave API lascia AlgoVesta, nessun codice, nessuna installazione locale.
Parlaci. “Come sta il mio portafoglio?” “Simula un long da $200 su ETHUSDT a 5x.” “Chiudi metà della mia posizione BTC.”
Il tuo URL di connessione è simile a questo:
https://api.algovesta.com/u/avmcp_<your-key>/mcp
Quell'URL è una credenziale. Chiunque lo possieda può agire, entro il suo ambito, sui tuoi account. Trattalo come una password: non incollarlo mai in una chat pubblica, uno screenshot, un repository condiviso o un ticket di assistenza. Se dovesse trapelare, revocalo dal pannello — la revoca ha effetto immediato per le nuove connessioni e interrompe gli stream di eventi aperti entro pochi secondi.
Quali assistenti AI possono connettersi
Qualsiasi client che parla MCP su Streamable HTTP può connettersi. La tabella qui sotto riporta ciò che è stato verificato sul server live, incluse le limitazioni reali — alcune di queste sono vincoli del prodotto AI, non di AlgoVesta, e le incontrerai indipendentemente dal server MCP che utilizzi.
| Client AI | Dove incollare il link | Note e limiti reali |
|---|---|---|
| Claude (web, desktop, iOS, Android) | Customize → Connectors → Add custom connector | Supporto completo. I titoli degli strumenti e le finestre di conferma provengono direttamente dal server. |
| Claude Code | claude mcp add --transport http | Riga di comando. Utile per flussi di lavoro scriptati o ripetibili. |
| Cursor | mcp.json, il "url" campo | Supporto completo. Nota che il nome della chiave è url qui — Gemini CLI ne usa uno diverso. |
| ChatGPT | Developer mode / custom connector | Solo piani a pagamento. I connettori MCP personalizzati non sono disponibili nel piano gratuito, ed è possibile che la modalità sviluppatore debba essere prima abilitata. Questa è una restrizione di OpenAI. |
| Gemini CLI | ~/.gemini/settings.json, il "httpUrl" campo | Solo CLI. L'app web di Gemini non supporta server MCP personalizzati. Usa la httpUrl chiave, non url. |
| Qualsiasi altro client compatibile con MCP | Le proprie impostazioni MCP / connettore | Il server implementa lo standard, quindi qualsiasi client che supporti MCP remoto su Streamable HTTP funzionerà senza bisogno di nulla di specifico. |
Esempio Cursor (mcp.json):
{
"mcpServers": {
"algovesta": {
"url": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Esempio Gemini CLI (~/.gemini/settings.json) — nota httpUrl:
{
"mcpServers": {
"algovesta": {
"httpUrl": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
}
}
}
Claude Code:
claude mcp add --transport http algovesta https://api.algovesta.com/u/avmcp_<your-key>/mcp
Trasporto e protocollo
| Trasporto | Streamable HTTP, stateless, risposte JSON. Ogni richiesta è autenticata in modo indipendente. |
| Nome del server | AlgoVesta |
| Endpoint per il link segreto | https://api.algovesta.com/u/<key>/mcp |
| Endpoint OAuth | https://api.algovesta.com/mcp |
| Modifiche all'elenco degli strumenti | tools.listChanged = true. I client aggiornano l'elenco degli strumenti alla riconnessione, quindi nuovi strumenti e parametri appaiono senza dover rimuovere e ri-aggiungere il connettore. |
| Stream di eventi | Eventi server-sent all'indirizzo /mcp/events e /u/<key>/events, isolato per tenant, con Last-Event-ID riconnessione. |
| Schema leggibile da macchina | /mcp/tools.json — lo JSON Schema completo di tutti i 20 strumenti, esattamente come lo riceve il client. |
Autenticazione e ambiti
Esistono due modi per connettersi, ed entrambi risolvono nello stesso contesto tenant. Gli strumenti non accettano mai un ID utente come parametro — l'identità viene letta solo dalla connessione autenticata, il che rende l'accesso incrociato tra account strutturalmente impossibile e non semplicemente vietato.
Link segreto
Una chiave nella forma avmcp_<32-byte urlsafe random>, incorporata nel percorso dell'URL. Viene memorizzata come hash Argon2id più un hash di lookup SHA-256; il testo in chiaro esiste solo al momento della creazione e non è più recuperabile in seguito. Ogni chiave porta con sé il proprio ambito, la propria etichetta e il proprio stato di revoca, quindi puoi usare una chiave paper in Cursor e una chiave live in Claude e disattivare ciascuna in modo indipendente.
OAuth 2.1
Per i client che preferiscono un flusso di autorizzazione vero e proprio. I grant supportati sono authorization_code e refresh_token, con refresh token a rotazione. PKCE con S256 è obbligatorio — una richiesta senza di esso viene rifiutata. È disponibile la registrazione dinamica del client, quindi la maggior parte dei client si configura automaticamente. Documenti di discovery:
GET https://api.algovesta.com/.well-known/oauth-authorization-server
GET https://api.algovesta.com/.well-known/oauth-protected-resource
POST https://api.algovesta.com/mcp/oauth/register
GET https://api.algovesta.com/mcp/oauth/authorize
POST https://api.algovesta.com/mcp/oauth/token
I tre ambiti
| Ambito | Cosa può fare | Come si ottiene |
|---|---|---|
read | Portafoglio, prezzi, ordini in sospeso, simulazioni, anteprime delle policy, verifica delle ricevute, replay dei canali. Non è possibile piazzare alcun ordine. | Creato direttamente. |
paper | Tutto ciò che è incluso in read, più gli ordini eseguiti sul motore paper con un saldo virtuale di $5.000. Il valore predefinito per le nuove chiavi. | Creato direttamente. |
live | Tutto quanto sopra, più ordini reali sui tuoi exchange connessi e sugli account MetaTrader 5. | È richiesto un secondo fattore. Un codice authenticator (TOTP) valido, oppure un codice di conferma inviato all'e-mail del tuo account e valido per 10 minuti. Applicato lato server, senza eccezioni. |
Gli ambiti sono gerarchici, quindi uno strumento che richiede paper rifiuta una chiave read con insufficient_scope. Il confine tra denaro simulato e denaro reale è quindi una proprietà della chiave stessa, non di un prompt, di un'impostazione o del giudizio del modello.
Riferimento degli strumenti — tutti i 20 strumenti
Questi sono esattamente gli strumenti che il tuo assistente vede. Gli strumenti di lettura possono essere chiamati in sicurezza senza chiederti prima il permesso; i sei strumenti di scrittura sollevano una richiesta di conferma nei client che la supportano, e tre di essi — place_order, close_position e cancel_order — sono inoltre contrassegnati come distruttivi nelle loro annotazioni.
| Strumento | Ambito | Tipo | Scopo |
|---|---|---|---|
get_portfolio_context | read | solo lettura | Ogni account connesso in un'unica chiamata |
get_market_price | read | solo lettura | Prezzo live con indicazione dell'aggiornamento |
simulate_order | read | solo lettura | Simulazione (dry-run) incluso il verdetto della policy |
place_order | paper / live | distruttivo | Apre una posizione |
close_position | paper / live | distruttivo | Chiude totalmente o parzialmente |
modify_position | paper / live | scrittura | Sposta stop-loss e take-profit |
list_open_orders | read | solo lettura | Ordini limite in sospeso |
cancel_order | paper / live | distruttivo | Annulla un ordine in sospeso |
compile_policy | read | solo lettura | Trasforma regole in linguaggio naturale in un'anteprima di policy |
verify_receipt | read | solo lettura | Verifica firma e catena di hash |
replay_channel | read | solo lettura | Esegue un back-test di un canale Telegram rispetto alle tue regole |
get_trade_history | read | solo lettura | Trade chiusi e performance su crypto, MT5 e paper |
compare_venues | read | solo lettura | Classifica gli exchange connessi per prezzo e spread misurati |
list_strategies | read | solo lettura | Strategie TradingView; l'URL del webhook non viene mai restituito |
create_strategy | paper / live | scrittura | Nuova strategia, sempre con l'esecuzione in denaro reale disattivata |
update_strategy | paper / live | scrittura | Impostazioni della strategia; auto_trade è rifiutato |
backtest_my_signals | read | read-only | Riproduce i tuoi segnali passati con impostazioni diverse (lavoro in coda) |
simulate_policy | read | read-only | Applica una policy di rischio alle operazioni che hai davvero chiuso (lavoro in coda) |
import_tradingview_backtest | read | read-only | Ricalcola un export di TradingView con commissioni e slippage reali (lavoro in coda) |
get_job_status | read | read-only | Avanzamento e risultato di un lavoro in coda |
get_portfolio_context
Non accetta parametri. Restituisce una vista normalizzata di ogni account exchange, ogni account MetaTrader 5 e l'account paper appartenenti alla chiave autenticata — e nient'altro. È la chiamata che trasforma “come sto andando?” in una singola domanda invece che sedici.
Due campi contano più degli altri. Per gli account crypto, balance e equity descrivono il solo il wallet futures; il denaro spot viene riportato separatamente in spot_balance, quindi un assistente che legge solo balance può concludere erroneamente che tu non abbia nulla. Per gli account MetaTrader 5, positions_source può essere live_ea, il che significa che l'elenco delle posizioni è stato verificato rispetto al terminale, oppure unavailable, il che significa che non è stato possibile raggiungere il terminale. Nel caso unavailable , un elenco di posizioni vuoto non significa “nessuna posizione aperta” — significa sconosciuto, e la descrizione dello strumento istruisce il modello a dirlo esplicitamente invece di rassicurarti.
get_market_price
Parametri: venue, symbol. Restituisce {ok, venue, symbol, last, bid, ask, ts, source, age_sec}. I prezzi provengono da una cache condivisa aggiornata circa ogni secondo; in caso di mancato riscontro, il server effettua una chiamata REST live all'exchange. Se il valore è più vecchio di 10 secondi o non può essere recuperato affatto, questo viene dichiarato esplicitamente — un prezzo non aggiornato non viene mai spacciato per uno live. Se il simbolo non esiste su nessun exchange connesso, può essere restituito un prezzo DEX informativo insieme a un avviso chiaro che non puoi fare trading su di esso sui tuoi venue connessi.
simulate_order
Obbligatori: venue, symbol, side, order_type, idempotency_key. Non invia alcun ordine. Restituisce il fill previsto, l'impatto sul margine e il verdetto della policy, oltre ai prezzi assoluti di stop-loss e take-profit calcolati dal server. È un'operazione di lettura, quindi un assistente ben progettato la chiama senza chiedere il permesso, ti mostra un riepilogo e chiede esattamente una conferma prima di piazzare qualsiasi cosa.
place_order
Obbligatori: venue, symbol, side, order_type, idempotency_key. Opzionali: account, market, size_usd, margin_usd, risk_pct, lots, leverage, sl, tp, sl_pct, tp_pct, take_profits, entry_price.
Il idempotency_key non è un dettaglio decorativo. Se la stessa chiave arriva due volte per lo stesso utente, la risposta memorizzata viene restituita nuovamente e non viene aperto un secondo ordine — questo è ciò che ti protegge quando un client riprova dopo un timeout, un telefono perde il segnale a metà conferma, o un modello chiama uno strumento due volte.
Il dimensionamento è esplicito di proposito. Per il crypto passi esattamente uno di tre campi, e questi significano cose diverse:
| Campo | Significato | Esempio a 5x |
|---|---|---|
size_usd | Valore della posizione (nozionale) | size_usd=100 → una posizione da $100, $20 dei tuoi soldi |
margin_usd | Collaterale dalle tue tasche | margin_usd=20 → una posizione da $100 |
risk_pct | Percentuale del saldo libero utilizzata come margine. Non si tratta di un dimensionamento del rischio basato sulla distanza dello stop; la distanza dello stop-loss non entra nel calcolo. | risk_pct=1 su un saldo di $2.000 → $20 di margine → una posizione da $100 |
Per il forex e MetaTrader 5, la dimensione viene indicata in lots invece, e leverage non viene inviato affatto — il prodotto non è a leva e il dimensionamento deriva dal volume in lotti. La dimensione del lotto che indichi viene usata esattamente e non viene mai arrotondata a un valore comodo; se è al di fuori dei limiti del tuo broker, l'ordine viene rifiutato e viene restituito l'intervallo consentito.
Tolleranza sulla dimensione dell'ordine. Gli exchange accettano solo determinati incrementi di lotto, quindi l'importo richiesto viene fatto corrispondere al passo valido più vicino. Se la deviazione rimane entro il 20% l'ordine procede e la deviazione esatta ti viene comunicata; oltre il 20% l'ordine non viene aperto e ti vengono indicati, in numeri, quali importi vicini funzionerebbero. Quella soglia è stata scelta ri-eseguendo ogni ordine reale mai piazzato attraverso la funzione di dimensionamento, non scelta per intuito.
I campi omessi ricadono sulle tue impostazioni salvate. Se non indichi uno stop-loss, un take-profit o una leva, l'assistente è istruito a lasciare quei campi vuoti, e il server li compila usando le preferenze salvate nel tuo pannello — gli stessi valori usati dal pannello manuale e dal bot Telegram. La risposta indica quali campi provengono dalle impostazioni salvate in prefs_used. Questo esiste a causa di un problema misurato: quando quei campi erano obbligatori il modello doveva inventare valori, e cinque ordini su cinque sovrascrivevano la configurazione del cliente stesso.
close_position
Obbligatori: venue, symbol, side, idempotency_key. Opzionali: fraction (0 a 1], account, ticket. Funziona per crypto e per MetaTrader 5. La chiusura riduce il rischio, quindi il muro di policy non la blocca mai — solo il kill switch può farlo. Dieci chiamate con la stessa chiave di idempotenza eseguono esattamente una chiusura. Se non esiste una posizione corrispondente ottieni POSITION_NOT_FOUND insieme alle posizioni che sono aperte su quel venue, così l'assistente può correggersi invece di indovinare.
MetaTrader 5 non ha chiusura parziale — l'Expert Advisor chiude interamente — quindi usa fraction=1 lì. Quando sono aperte più posizioni MT5 sullo stesso simbolo, ticket diventa obbligatorio, e finché il target è ambiguo non viene chiuso nulla.
modify_position
Obbligatori: venue, symbol, side, idempotency_key, più almeno uno tra new_sl / new_tp. Lo stop-loss non può essere rimosso — la regola dello SL obbligatorio vale anche qui. L'ordinamento viene convalidato: un long richiede new_sl < mark < new_tp, uno short il contrario. Inviare solo un lato lascia l'altro al suo valore attuale invece di eliminarlo. Come per la chiusura, un ticket MT5 ambiguo comporta che non venga modificato nulla.
list_open_orders
Opzionale: venue. Elenca gli ordini limite in sospeso con order_ref, venue, simbolo, lato, prezzo di ingresso, dimensione e orario di creazione.
Un avvertimento da tenere presente prima di chiedere a un assistente di rivedere i tuoi ordini in sospeso: gli ordini in sospeso tracciati da questo strumento vivono nel libro ordini paper. Gli ordini piazzati su un venue live tramite MCP vengono inviati come ordini a mercato, quindi vengono eseguiti subito invece di restare in attesa, e un elenco vuoto su un account live significa che non c'è nulla in sospeso, non che qualcosa sia sparito.
cancel_order
Obbligatorio: venue, order_ref, idempotency_key. Se il riferimento non ti appartiene la risposta è NOT_FOUND — mai un indizio che l'ordine di qualcun altro esista. Come la chiusura, riduce il rischio e il muro di policy non lo blocca.
compile_policy
Obbligatorio: natural_text. Scrivi una regola in linguaggio naturale — “non rischiare mai più del 2% su un singolo trade, nessuna leva sopra 10, solo BTC ed ETH” — e viene compilata in una policy JSON, restituita come anteprima. La compilazione non attiva mai nulla. L'attivazione è un passaggio separato e deliberato dal pannello o tramite POST /api/mcp/policies/{policy_id}/activate, il che significa che un modello non può allentare le tue regole semplicemente parlandone.
verify_receipt
Obbligatorio: receipt_id. Restituisce signature_valid e chain_valid; un'azione è verificata solo quando entrambi sono veri. Le ricevute sono firmate ed25519 e concatenate tramite hash per utente, quindi alterare una ricevuta precedente rompe tutte quelle successive e chain_valid diventa falso. La chiave pubblica è servita all'indirizzo /mcp/receipts/pubkey, così puoi verificare in modo indipendente senza doverti fidare di questo endpoint. Le ricevute più vecchie dell'era HMAC restituiscono legacy=true.
replay_channel
Obbligatorio: channel_ref. Opzionali: days (fino a 90, predefinito 30), policy_override. Risponde alla domanda “cosa sarebbe successo se avessi seguito questo canale Telegram negli ultimi X giorni secondo le mie regole?” riproducendo i suoi segnali passati in modalità paper, con ogni segnale che passa attraverso il muro di policy così quelli respinti non vengono mai aperti. L'avanzamento arriva come replay_progress eventi. I risultati vengono memorizzati in cache per 24 ore e lo strumento è limitato a 5 replay all'ora. Output: {trades:[...], summary:{total_pnl, win_rate, max_drawdown, avg_rr, policy_rejections}}.
get_trade_history
Opzionali: venue, symbol, days (1–365, predefinito 30), limit (1–200, predefinito 50), market (crypto / forex / paper). Restituisce i trade chiusi da tutte e tre le fonti in un'unica lista, dal più recente, più un summary. Il riepilogo è deliberatamente prudente: avg_rr viene calcolato solo dai trade in cui entrata, stop-loss e uscita sono tutti noti, e rr_sample indica quanti erano; total_pnl è null quando sono mescolate più valute di account, con pnl_by_currency fornito al suo posto; la commissione non viene registrata da nessuna parte, quindi fee resta null e il PnL crypto è lordo. Se una fonte non può essere letta, incomplete_sources la indica invece di restituire un elenco breve come se fosse completo.
compare_venues
Obbligatorio: symbol. Opzionali: market (futures predefinito, oppure spot), side. Restituisce, per ogni exchange crypto connesso, il prezzo live e — sui venue che pubblicano bid/ask — lo spread in punti base, più il divario di prezzo tra i venue. Non sceglie un venue: il tuo ordine ne indica comunque uno. Le commissioni di trading, la profondità dell'order book e lo slippage sono elencati in basis.not_measured e non vengono mai stimati, e un venue che non ha pubblicato bid/ask compare in not_comparable_on_spread invece di essere classificato come se il suo spread fosse zero. cheapest_measured significa quindi “spread misurato più basso”, non “più economico in assoluto”.
list_strategies
Nessun parametro. Restituisce le tue strategie TradingView con le loro impostazioni, plan_limit e can_create_more. auto_trade viene riportato per ogni strategia così l'assistente può dirti quali sono live. L'URL del webhook, l'URL demo e il secret HMAC vengono rimossi dalla risposta — vengono esposti solo webhook_url_configured e has_hmac_secret, perché l'URL stesso è una credenziale.
create_strategy
Opzionale: name. Obbligatorio: idempotency_key. Crea una strategia TradingView con auto_trade disattivato; il campo non è scrivibile via MCP, quindi una strategia appena creata non può piazzare ordini reali finché non la attivi tu stesso nel pannello. Soggetta alla quota di strategie del tuo piano — oltre il limite restituisce un errore codificato di limite del piano invece di non fare nulla silenziosamente.
update_strategy
Obbligatorio: strategy_id, changes, idempotency_key. Modifica la leva (limitata tra 1–20), la percentuale di rischio (0.1–50), le percentuali di stop-loss e take-profit, le impostazioni di trailing e break-even, i simboli consentiti, l'account di destinazione e se la strategia accetta segnali. auto_trade, status e ip_allowlist vengono rifiutati e restituiti in refused_fields; l'eliminazione è possibile solo dal pannello. Attivare reverse_enabled restituisce un warning, perché da quel momento un segnale BUY apre uno SHORT.
backtest_my_signals
Facoltativo: days (1–90), source, symbols, margin_usd, leverage, sl_pct, tp_pct, max_hold_minutes, taker_fee_bps, partial_tp. Riproduce i segnali che hai davvero ricevuto su barre storiche reali da un minuto della mainnet, due volte: una con stop, take-profit e leva originali di ogni segnale e una con le tue impostazioni. Restituisce subito un job_ref; il risultato si recupera con get_job_status. Ogni risultato riporta coverage (quanti segnali si sono potuti simulare e perché gli altri no) e assumptions (commissioni, slippage, TP parziale e ciò che non viene modellato). I segnali senza stop, con lo stop dal lato sbagliato dell'ingresso o senza dati storici vengono contati e saltati, mai indovinati.
simulate_policy
Facoltativo: policy_text (linguaggio naturale), rules (già compilate), days (1–365). Applica una policy di rischio alle operazioni che hai davvero chiuso e indica quali avrebbe rifiutato, con quale regola, e la differenza di PnL. Restituisce un job_ref. Due limiti sono sempre dichiarati: le regole che dipendono dallo stato del conto al momento dell'ordine (posizioni aperte, perdita giornaliera, saldo) sono valutate con zeri perché quello stato non è ricostruibile dalle operazioni chiuse — quindi sono SOTTO-contate, mai sovra-contate; e il PnL proviene dai tuoi risultati realizzati, è riportato per valuta e mai sommato tra valute diverse.
import_tradingview_backtest
Obbligatorio: csv_text. Facoltativo: taker_fee_bps, slippage_bps, leverage. Prende il CSV esportato dallo Strategy Tester di TradingView (List of Trades) e lo ricalcola con costi reali: commissioni taker e slippage misurato sia in entrata sia in uscita. Pine Script non viene mai eseguito né interpretato — si ricalcola solo l'elenco di operazioni che hai esportato — e i prezzi restano quelli riportati da TradingView. Le righe senza colonna quantità non possono sostenere commissioni, quindi restano ottimistiche e il loro numero viene riportato. Restituisce un job_ref.
get_job_status
Facoltativo: job_ref. Con un riferimento restituisce lo stato di quel lavoro e, una volta finito, il suo risultato; senza argomenti elenca i tuoi lavori recenti. status è uno tra PENDING, RUNNING (con percentuale in progress), DONE, FAILED (è previsto un nuovo tentativo), DEAD o CANCELLED. I lavori girano uno alla volta, quindi queue_position dice quanti ci sono prima del tuo. Un riferimento che non è tuo riceve la STESSA risposta “non trovato” di uno inesistente, così non possono essere enumerati.
I risultati non restano per sempre, ed è bene conoscerne i limiti prima di farci affidamento. Solo i 20 lavori completati più recenti mantengono il risultato completo; quelli più vecchi vengono ridotti al loro riepilogo e tornano con result_pruned: true, il che significa che le righe di dettaglio sono sparite e il lavoro deve essere rieseguito per rigenerarle. Tutto viene eliminato dopo 30 giorni. Anche le esecuzioni di backtest e di policy vengono scritte nella cronologia backtest del tuo account, e il risultato riporta il run_id sotto cui sono state salvate.
Il muro di policy
Questa è la parte che rende difendibile l'idea di affidare strumenti a un modello linguistico. Le tue regole vengono compilate una sola volta in JSON, validate rispetto a uno schema fisso, e poi valutate lato server e in modo deterministico su ogni ordine. Il modello non le valuta mai, non vede mai un modo per aggirarle e non può essere persuaso ad allentarle — né da te in un momento di impazienza, né da un prompt iniettato attraverso una pagina web o un messaggio Telegram che ha letto per caso. Una violazione è un rifiuto netto con una voce nel registro di audit.
| Regola | Tipo | Significato |
|---|---|---|
max_risk_per_trade_pct | numero, 0–100 | Limite massimo sulla quota dell'account di un singolo trade |
max_order_size_usd | numero > 0 | Limite assoluto sul valore dell'ordine |
max_daily_loss_usd | numero > 0 | Interrompi il trading per la giornata oltre questa perdita |
max_open_positions | intero | Limite di concorrenza |
leverage_cap | numero, 1–1000 | Il tuo limite massimo di leva |
venue_scope | array | Limita l'AI ai venue indicati |
symbol_whitelist | array | Solo questi simboli possono essere scambiati |
symbol_blacklist | array | Questi simboli non vengono mai scambiati |
allowed_sides | array | Solo long, solo short, o entrambi |
notes | stringa | La tua annotazione personale |
Una policy compilata che non supera la validazione dello schema non può essere attivata in alcun modo. Non esiste una policy parzialmente valida.
Modello di sicurezza
| Paper per impostazione predefinita | Ogni nuova chiave inizia nell'ambito paper con un saldo virtuale di $5.000. Raggiungere denaro reale è un atto esplicito e separato. |
| Lo stop-loss è obbligatorio | Se non esiste né uno stop-loss esplicito né un valore predefinito salvato, l'ordine viene rifiutato. Inoltre non può essere rimosso in seguito. |
| Idempotenza | Ogni strumento di scrittura richiede una chiave generata dal client di almeno 8 caratteri. Le ripetizioni restituiscono la risposta memorizzata invece di agire due volte. |
| Kill switch | POST /api/mcp/freeze ferma tutto immediatamente; ogni strumento restituisce quindi user_frozen. /unfreeze lo disattiva. |
| Revoca per singola chiave | Revoca un client senza toccare gli altri. Gli stream di eventi aperti si interrompono entro pochi secondi. |
| Ricevute firmate | firma ed25519 più una catena di hash per utente su ogni azione, verificabile rispetto a una chiave pubblica. |
| Registro di audit | Ogni chiamata viene registrata con nome dello strumento, argomenti, risultato e latenza, leggibile all'indirizzo GET /api/mcp/audit e nel pannello. |
| Isolamento per tenant | Gli strumenti non possono accettare un ID utente; l'identità proviene solo dalla connessione autenticata. |
| Chiavi solo per il trading | Le tue chiavi API exchange vengono create senza permesso di prelievo e memorizzate con crittografia AES-256. Gli ordini partono da IP di trading AlgoVesta fissi che inserisci nella allowlist presso l'exchange. |
Sulla leva, in parole semplici: AlgoVesta non impone un limite massimo di leva sul tuo account — lo fa il tuo exchange, e puoi impostare il tuo limite personale con la leverage_cap regola di policy. Il forex tramite MetaTrader 5 non è a leva in questo percorso ed è dimensionato in lotti. Chiunque ti dica che qui una piattaforma “limita la leva a 20x” sta descrivendo qualcosa che non esiste.
Errori
| Codice | HTTP | Quando accade |
|---|---|---|
unauthorized | 401 | Chiave mancante, non valida o revocata |
insufficient_scope | 401 | Lo strumento richiede un ambito superiore a quello posseduto dalla chiave |
forbidden | 403 | Non consentito per questo account |
user_frozen | 403 | Il kill switch è attivo |
policy_violation | 403 | Una regola ha respinto l'ordine; la risposta elenca quale |
idempotency_conflict | 409 | La stessa chiave è stata riutilizzata con argomenti diversi |
validation_failed | 422 | Argomenti malformati o contraddittori |
rate_limited | 429 | Troppe chiamate; retry_after è incluso |
I rifiuti a livello di dominio arrivano come risultati strutturati anziché come errori di trasporto, così l'assistente può agire di conseguenza: VENUE_NOT_CONNECTED, ACCOUNT_REQUIRED, ACCOUNT_AMBIGUOUS, ACCOUNT_NOT_FOUND, POSITION_NOT_FOUND, MISSING_FIELDS, INVALID_SIDE, SL_REMOVAL_FORBIDDEN. I messaggi di errore non rivelano mai dettagli interni, e non rivelano mai nulla su un altro account.
Limiti di frequenza
| Ambito del limite | Limite |
|---|---|
| Tutte le chiamate agli strumenti, per chiave | 60 al minuto |
place_order | 10 al minuto |
replay_channel | 5 all'ora (risultati in cache per 24 ore) |
| E-mail di conferma per l'ambito live | 1 al minuto |
Eventi live
Uno stream di eventi server-sent isolato per tenant è disponibile all'indirizzo /mcp/events (OAuth) e /u/<key>/events (link segreto), con Last-Event-ID riconnessione, così una connessione interrotta riprende invece di ripartire da zero. Tipi di eventi: fill, policy_rejected, position_closed, sl_hit, tp_hit, e replay_progress durante un replay di canale.
Venue — 16 exchange e MetaTrader 5
Una singola connessione li raggiunge tutti. Un venue diventa disponibile per l'AI solo dopo che lo hai connesso in AlgoVesta; chiedere di uno che non hai connesso restituisce VENUE_NOT_CONNECTED invece di un'ipotesi.
| Exchange | venue valore |
Mercati | Passphrase necessaria |
|---|---|---|---|
| Binance | binance | Spot, futures | No |
| Bybit | bybit | Spot, futures | No |
| OKX | okx | Spot, futures | Sì |
| KuCoin | kucoin | Spot, futures | Sì |
| Gate.io | gateio | Spot, futures | No |
| Bitget | bitget | Spot, futures | Sì |
| Kraken | kraken | Spot, futures | No |
| Coinbase | coinbase | Spot | No |
| BingX | bingx | Spot, futures | No |
| Hyperliquid | hyperliquid | Futures | No |
| Backpack | backpack | Spot, futures | No |
| HTX | htx | Spot, futures | No |
| BloFin | blofin | Spot, futures | Sì |
| Phemex | phemex | Spot, futures | No |
| WOO X | woo | Spot, futures | Sì (Application ID) |
| CoinEx | coinex | Spot, futures | No |
| MetaTrader 5 (forex, metalli, indici) | mt5 | Lotti, percorso senza leva | Login broker |
| Motore paper | paper | $5.000 virtuali | — |
Sei di questi — Binance, Bybit, OKX, Gate.io, KuCoin e Bitget — sono stati verificati end-to-end con denaro reale sia su futures che su spot, con stop-loss e take-profit confermati esistere sull'exchange stesso e corrispondere esattamente ai valori registrati. Ogni exchange ha le proprie particolarità, e le differenze sono deliberate e non lacune: Bybit e Bitget non accettano una seconda gamba di take-profit sullo spot, OKX spot viene instradato tramite l'API grezza per evitare che un account cash diventi silenziosamente un account a margine, Binance spot impone un valore nozionale minimo prima dell'acquisto, e gli acquisti a mercato su KuCoin vengono piazzati in modalità cost.
Spot e futures sono sempre tenuti separati. Lo stesso simbolo sui due mercati è una riga separata, un feed di prezzo separato e una chiave separata — l'uno non si mescola mai con l'altro.
MetaTrader 5 senza alcuna installazione
Non installi nulla per il forex. Non c'è nessun VPS da noleggiare, nessun terminale MetaTrader da tenere attivo sulla tua macchina, nessun Expert Advisor da collegare e nessun account bridge di terze parti da acquistare. AlgoVesta gestisce i terminali MetaTrader 5 sui propri server gestiti e li mantiene connessi al tuo broker 24 ore su 24. Inserisci le credenziali del tuo account una sola volta e da quel momento il tuo assistente AI può fare trading su quell'account. I dati sulle posizioni restituiti all'assistente sono verificati rispetto al terminale, e quando non possono essere verificati lo strumento lo dichiara invece di lasciare intendere un account vuoto.
Roadmap — azioni globali
Il trading azionario globale tramite Interactive Brokers (IBKR) è pianificato, con l'obiettivo di raggiungere 170 azioni globali raggiungibili dalla stessa connessione MCP di crypto e forex. Si tratta di un elemento della roadmap ed è non ancora attivo oggi; nient'altro in questa pagina, a parte questo paragrafo, lo descrive, e nessuno strumento attuale può fare trading su azioni. Quando verrà rilasciato apparirà come ulteriori venue valori sotto gli stessi strumenti, lo stesso muro di policy e le stesse ricevute.
Latenza misurata
Questi sono dati misurati, non numeri di marketing.
| Fase | Misurato |
|---|---|
| Ricezione e parsing della richiesta | 17–67 ms (mediana 38 ms) |
| End-to-end su MetaTrader 5 | Circa 1 secondo (849 ms misurati; 702 ms per la chiusura) |
| End-to-end su un exchange crypto | Circa 3 secondi (2.785 ms misurati) |
| Motore paper | Mediana 318 ms — nessun round trip verso l'exchange |
Il tempo trascorso all'interno del tuo client AI — il modello che ragiona, e tu che confermi — non è incluso e di solito sarà predominante. Questo server non è un venue di esecuzione a bassa latenza e non viene venduto come tale.
Endpoint REST del pannello
Tutto ciò che l'AI non può e non dovrebbe fare da sola si trova dietro la tua normale sessione con accesso effettuato.
POST /api/mcp/keys create a key (live requires 2FA)
GET /api/mcp/keys list keys
DELETE /api/mcp/keys/{key_id} revoke a key
POST /api/mcp/live-code send the live-scope confirmation code
POST /api/mcp/freeze | /api/mcp/unfreeze kill switch
GET /api/mcp/status connection status
GET /api/mcp/policies list policies
POST /api/mcp/policies/compile compile without activating
POST /api/mcp/policies/{id}/activate activate
POST /api/mcp/policies/{id}/deactivate deactivate
GET /api/mcp/audit audit log
GET /api/mcp/receipts receipts
GET /api/mcp/receipts/{receipt_id}/verify verify one receipt
GET /api/mcp/pubkey receipt public key
GET /api/mcp/paper | POST /api/mcp/paper/reset
Cosa ti serve avere
La connessione MCP in sé fa parte del prodotto e non viene venduta separatamente. Ciò che in pratica ti limita è cosa l'AI è destinata a raggiungere: il paper trading richiede solo un account, mentre il trading live richiede un piano a pagamento attivo e gli account connessi che quel piano consente — e il trading live su MetaTrader 5 con denaro reale richiede inoltre che tu attivi esplicitamente l'opzione per quell'account. I limiti di piano sul numero di chiavi exchange e account MetaTrader sono elencati nella pagina dei prezzi. Puoi provare tutto con il saldo paper di $5.000 prima che qualcosa di tutto ciò diventi rilevante.
Domande frequenti
live , e quell'ambito viene rilasciato solo dopo un secondo fattore. Fino ad allora lo stesso assistente opera su un saldo paper di $5.000 con strumenti identici, così puoi provare l'intero flusso di lavoro prima che qualsiasi denaro reale sia raggiungibile.get_portfolio_context li restituisce tutti in un'unica chiamata. Quando possiedi più di un account nello stesso mercato, il account parametro diventa obbligatorio e una richiesta ambigua viene rifiutata invece di essere inviata a un valore predefinito.POST /api/mcp/freeze. Ogni strumento restituisce quindi user_frozen finché non sblocchi. Per disconnettere invece un singolo client, revoca solo quella chiave — le altre continuano a funzionare.verify_receipt , oppure in modo indipendente rispetto alla chiave pubblica all'indirizzo /mcp/receipts/pubkey. Modificare una vecchia ricevuta rompe la catena per ogni ricevuta successiva, il che è esattamente ciò che rende rilevabile qualsiasi manomissione.Connetti un assistente AI ai tuoi account
Inizia con il saldo paper di $5.000. Nessuna carta, nulla da installare, e il confine live resta chiuso finché non lo apri deliberatamente.
Crea un account gratuito Vedi la panoramicaCorrelati: MCP per assistenti AI · Server MCP Trading: Claude e ChatGPT su 16 Exchange + MT5 · exchange supportati · forex MetaTrader 5 · automazione TradingView · cos'è un server di trading MCP · sicurezza · prezzi.
Il trading comporta rischi. L'automazione non li elimina, e un assistente AI non costituisce consulenza sugli investimenti. Inizia in modalità paper.